I recently started to use IQKeyboardManager in my app that I am working on, it works really well except for a little problem. The height of my text view increases when the keyboard appears(Which makes the text view go up), I know this because I am printing the height of the text view each time I click on the text view. Here is the code of my text view:
// Setup text view
func setupTextView() {
// Placeholder text and color
startStoryTextView.textColor = .gray
startStoryTextView.text = "Type here"
startStoryTextView.backgroundColor = .red
// Add some padding to the text insde the text view
startStoryTextView.textContainerInset = UIEdgeInsets(top: 15, left: 10, bottom: 15, right: 10)
startStoryTextView.font = UIFont(name: "PatrickHand-Regular", size: 23)
startStoryTextView.layer.cornerRadius = 25
popUp.addSubview(startStoryTextView)
addTextViewConstraints()
}
// Add the constraints to the text view
func addTextViewConstraints() {
startStoryTextView.translatesAutoresizingMaskIntoConstraints = false
startStoryTextView.leadingAnchor.constraint(equalTo: popUp.leadingAnchor, constant: 3).isActive = true
startStoryTextView.trailingAnchor.constraint(equalTo: popUp.trailingAnchor, constant: -3).isActive = true
startStoryTextView.topAnchor.constraint(equalTo: popUp.topAnchor, constant: 3).isActive = true
//startStoryTextView.heightAnchor.constraint(equalToConstant: 589).isActive = true
startStoryTextView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -70).isActive = true
}
// Add constraints to the pop up view
func addPopUpConstraints() {
popUp.translatesAutoresizingMaskIntoConstraints = false
popUp.widthAnchor.constraint(equalToConstant: view.frame.width).isActive = true
popUp.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 10).isActive = true
popUp.topAnchor.constraint(equalTo: view.topAnchor, constant: 200).isActive = true
popUp.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}
Specifying the height of the text view solves this problem but, it will create another problem when the app is used on other devices with different resolutions.
// To print the height of the text view every time the user clicks on the text view
func textViewDidBeginEditing(_ textView: UITextView) {
print(startStoryTextView.frame.height)
}