如何滚动到UITextView的底部?我之前在stackoverflow上发布的一个帖子在我更新到Swift 4时停止了工作。
我的程序会定期将新信息粘贴到UITextView(consoleZe),然后滚动到它的底部,以便最新的更新始终可见,控制台风格。我的updateConsole方法基本上是这样的:
if let tempString = consoleZe.text {
currentText = tempString
}
consoleZe.text = currentText + "A message!\n"
let bottom = NSMakeRange(consoleZe.text.characters.count - 1, 1)
consoleZe.scrollRangeToVisible(bottom)
print("Scrolled to \(bottom)")
在Swift 3中,这非常有用!现在在Swift 4中,它只滚动有时。
我无法弄清楚为什么/何时滚动或不滚动。我添加了print语句来试图找出它。声明出现在Swift的控制台上,每次都有一个新更新的“底部”...但是在模拟器中它实际上只是偶尔滚动一次。如果我一次发送一条消息,屏幕会在10条消息之后,22条消息,20条消息,20条消息,21条消息之后奇迹般地滚动...
是否有关于scrollRangeToVisible的新要求或怪癖?
更重要的是,我做错了吗?
在更改文本值后,还有其他(更有效)的方法要求UITextView始终滚动到底部吗?
答案 0 :(得分:0)
签出this answer。
在Swift 4中,以下内容似乎适用于我(在iOS 9-12中):
let textViewBottom = NSMakeRange(textView.text.count - 1, 1)
textView.scrollRangeToVisible(textViewBottom)
textView.isScrollEnabled = false
textView.isScrollEnabled = true