Прокрутите до конца 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)
}
}