Я потратил на это несколько дней, но решения не видно.
У меня есть inputAccessoryView
, который состоит из UIView
, содержащего textView
и две кнопки. Поведение inputAccessoryView
соответствует ожиданиям и работает нормально во всех случаях, кроме одного.
Когда высота textView увеличивается, я пытаюсь увеличить высоту inputAccessoryView
на ту же величину. Когда я переопределяю высоту inputAccessoryView
в textViewDidChange
, inputAccessoryView
увеличивает высоту над клавиатурой вниз, а не вверх.
Я пробовал много разных предложений от SO, но ничего не сработало. Я предполагаю, что это автоматически добавленное NSLayoutConstraint
из inputAccessoryView
, но я понятия не имею, как изменить это значение в swift и iOS 8.3.
func textViewDidChange(textView: UITextView) {
var contentSize = messageTextView.sizeThatFits(CGSizeMake(messageTextView.frame.size.width, CGFloat.max))
inputAccessoryView.frame.size.height = contentSize.height + 16
}
добавление
inputAccessoryView.setTranslatesAutoresizingMaskIntoConstraints(true)
к приведенному выше коду помогает, и высота inputAccessoryView правильно увеличивается вверх, однако я получаю сообщение «Невозможно одновременно удовлетворить ограничения для нескольких ограничений», и очень сложно идентифицировать нарушителей. Также я получаю странный эффект от того, что textView создает дополнительное пространство ниже для каждого второго экземпляра новой строки.
Спасибо.