Высота UITextView увеличивается при использовании IQKeyboardManagers - PullRequest
0 голосов
/ 26 июня 2019

Я недавно начал использовать IQKeyboardManager в своем приложении, над которым я работаю, оно работает очень хорошо, за исключением небольшой проблемы. Высота моего текстового представления увеличивается, когда появляется клавиатура (что заставляет текстовое представление увеличиваться), я знаю это, потому что я печатаю высоту текстового представления каждый раз, когда я нажимаю на текстовое представление. Вот код моего текстового представления:

// 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

}

Указание высоты текстового представления решает эту проблему, но создает другую проблему, когда приложение используется на других устройствах с другим разрешением.

// 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)
}

Here is a gif to help you understand better.

1 Ответ

1 голос
/ 28 июня 2019

Не волнуйтесь, это функция IQKeyboardManager, а не ошибка.

Вы используете IQKeyboardManager, потому что хотите, чтобы textView повысился, когда textViewDidBeginEditing.


Исходный код очень понятен.

Когда вы активируете IQKeyboardManager, в IQKeyboardManager.swift вы звоните override init() {, override init() { do registerAllNotifications, registerAllNotifications и регистрируетесь для уведомления UITextField.

NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShowDng(_:)), name: UIKeyboardWillShow, object: nil)

// ...

клавиатура уже показывает. отрегулируйте положение.

В методе func optimizedAdjustPosition()() высота меняется


Ваш код странный.

почему startStoryTextView.bottomAnchor связано с view.safeAreaLayoutGuide.bottomAnchor.

startStoryTextView.bottomAnchor.constraint (equalTo: view.safeAreaLayoutGuide.bottomAnchor, постоянная: -70) .isActive = true

Так как startStoryTextView.superView равно popUp

popUp.addSubview (startStoryTextView)

Я думаю, что это ошибка кода. IQKeyboardManager не связано.

...