начать прокрутку, когда UITextView достигает определенного количества строк? Свифт 4

Итак, я делаю приложение для обмена сообщениями, и у меня есть inputAccessoryView с именем typingView, которое содержит messageTextView: UITextView и sendButton: UIButton. У меня есть отдельный класс, который называется class InputAccessoryView: UIView, UITextViewDelegate. Это мой код для настройки inputAccessoryView:

var typingView: InputAccessoryView!

lazy var typingViewContainer: UIView = {
    typingView = InputAccessoryView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: fakeTypingViewHeight.constant))
    return typingView
}()

override var inputAccessoryView: UIView? {
    get {
        return typingViewContainer
    }
}

override var canBecomeFirstResponder: Bool {
    get {
        return true
    }
}

Затем я добавляю наблюдателя для обработки события изменения contentSize UITextView:

messageTextView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil)

Я обрабатываю это правильно: каждый раз, когда contentSize изменяется на x строк, я увеличиваю высоту typingView на высоту x строк, вызывая typingView.invalidateIntrinsicContentSize(). Что-то вроде этого.

Вот мой код для пересчета размера:

override var intrinsicContentSize: CGSize {
    let sizeToFitIn = CGSize(width: messageTextView.bounds.size.width, height: .greatestFiniteMagnitude)
    let newSize = messageTextView.sizeThatFits(sizeToFitIn)
    let newHeight = newSize.height
    return CGSize(width: bounds.width, height: newHeight)
}

Кроме того, messageTextView.isScrollEnabled = false, из-за этот пост здесь.

Таким образом, он правильно пересчитывает высоту каждый раз, когда изменяется contentSize, но мой вопрос: Если я хочу, чтобы UITextView начинал прокрутку, скажем, с 5 строк, как мне это сделать?


person Michael Hsu    schedule 11.05.2018    source источник
comment
Вам нужно изменить contentSize, но оставить кадр таким же в этой точке.   -  person    schedule 11.05.2018
comment
Но тогда как мне найти newHeight UITextView с таким количеством строк?   -  person Michael Hsu    schedule 12.05.2018