У меня есть uitextview
subview
в inputContainerView, поскольку он может отображаться в приложении для обмена сообщениями.
Программно при загрузке якорь высоты uitextview
устанавливается при инициализации inputContainerView. Это ограничение отлично подходит для увеличения высоты контейнера по мере ввода большего количества строк текста.
Моя цель - ограничить высоту uitextview
после достижения количества строк X, где любые строки, введенные после этого, можно прокручивать. И точно так же, когда количество строк падает ниже максимального, он возвращается к своей первоначальной форме — без возможности прокрутки и автоматического изменения высоты в зависимости от содержимого.
После нескольких испытаний и исследований мне удалось зафиксировать высоту после достижения максимального количества строк, но я не могу понять, как вернуть ее в исходную форму, когда количество строк упало ниже максимального. Кажется, что высота uitextview
остается на высоте, на которой максимальное количество строк.
Ниже приведен соответствующий код:
//Container View Initialization, onLoad Frame Height is set to 60
override init(frame: CGRect) {
super.init(frame: frame)
autoresizingMask = .flexibleHeight
addSubview(chatTextView)
textView.heightAnchor.constraint(greaterThanOrEqualToConstant: frame.height - 20).isActive = true
}
//TextView Delegate
var isTextViewOverMaxHeight = false
var textViewMaxHeight: CGFloat = 0.0
func textViewDidChange(_ textView: UITextView) {
let numberOfLines = textView.contentSize.height/(textView.font?.lineHeight)!
if Int(numberOfLines) > 5 {
if !isTextViewOverMaxHeight {
containerView.textView.heightAnchor.constraint(greaterThanOrEqualToConstant: 40).isActive = false
containerView.textView.heightAnchor.constraint(equalToConstant:
containerView.textView.frame.height).isActive = true
containerView.textView.isScrollEnabled = true
textViewMaxHeight = containerView.textView.frame.height
isTextViewOverMaxHeight = true
}
} else {
if isTextViewOverMaxHeight {
containerView.textView.heightAnchor.constraint(equalToConstant: textViewMaxHeight).isActive = false
containerView.textView.heightAnchor.constraint(greaterThanOrEqualToConstant: 40).isActive = true
containerView.textView.isScrollEnabled = false
isTextViewOverMaxHeight = false
}
}
}