Прокрутите до конца UITextView, когда текст содержит возврат - PullRequest
0 голосов
/ 13 января 2019

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

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

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

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

1 Ответ

0 голосов
/ 14 января 2019

OK. Я обнаружил, в чем проблема. если 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)
    }

}
...