Прокрутите до конца UITextView, когда текст содержит возврат

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

Следующее работает отлично, пока мое текстовое представление не содержит никаких новых строк "\n"

let range = NSMakeRange(textView.text.count - 1, 1)
textView.scrollRangeToVisible(range)

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

1 ответ

ХОРОШО. Я обнаружил, в чем проблема. если UITextView сделан невыбираемым, когда вы программно добавляете текст в представление, представление не будет прокручиваться должным образом, если есть возвраты в тексте, тогда как текст без возвратов прокручивается отлично. Вот простой пример. Создайте Viewcontroller с одной кнопкой и UITextView. Подключите его и играйте с двумя Bools. Вы обнаружите, что если isSelectable = false и isReturnText = true, то он не будет прокручиваться, однако, если isReturnText = false, он прокручивает поиск. Если я установлю isSelectable = true, тогда оба будут прокручиваться как положено.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textView: UITextView!
    var isSelectable:Bool = true
    var isReturnText:Bool = true


    let returnText = "These sentences are separated by returns.\n"
    let nonReturnText = "These sentences are separated by space. "

    override func viewDidLoad() {
        super.viewDidLoad()
        textView.isSelectable = isSelectable

    }

    @IBAction func addNoReturnText(_ sender: Any) {
        textView.text += isReturnText ? returnText : nonReturnText
        let range = NSMakeRange(textView.text.count - 1, 1)
        textView.scrollRangeToVisible(range)
    }

}
Другие вопросы по тегам