У меня есть tableView
, у которого есть обычай inputAccessoryView
, и у меня есть tableView.keyboardDismissMode
, установленный на .interactive
. Я подклассифицировал UIView
, и я создаю этот класс как свой собственный inputAccessoryView
.Быстрая проблема с inputAccessoryView
В представлении есть textView
, и у меня есть его размер автоматически, пока не будет достигнуто определенное количество линий. Это мой код для этого:
override var intrinsicContentSize: CGSize {
DispatchQueue.main.async {
let path = IndexPath(row: self.tableView.numberOfRows(inSection: 0) - 1, section: 0)
self.tableView.scrollToRow(at: path, at: .bottom, animated: true)
}
sendButton.frame.origin.y = self.frame.maxY - 5 - sendButton.frame.height
return CGSize(width: self.bounds.width, height: (textView.numberOfLines() < 10 ? textView.text.sizeForWidth(width: textView.frame.width, font: textView.font!).height : 254) + textView.frame.origin.y * 2)
}
func textViewDidChange(_ textView: UITextView) {
placeholderLabel.isHidden = !textView.text.isEmpty
if textView.numberOfLines() < 10 { // I defined numberOfLines() elsewhere
textView.isScrollEnabled = false
} else {
textView.isScrollEnabled = true
}
invalidateIntrinsicContentSize()
}
.async {}
блок для прокрутки в нижней части tableView
снова когда-то inputAccessoryView
высота увеличивается.
Моя проблема заключается в том, что, когда я тащу вниз на tableView
, чтобы скрыть клавиатуру, то tableView
запускает анимацию прокрутки (тот, в async
блоке), когда я не хочу, чтобы это прокрутите до конца. Вот a video того, что происходит.
Я боролся с тем, чтобы это работало, как я хочу на пару дней. Может ли кто-нибудь объяснить мне, почему он не работает, как я хочу, и как я могу это исправить?
Большое спасибо!
ничего общего с «визуальными ограничениями». – matt