滚动到UITextView停止工作的底部

问题描述 投票:2回答:1

我该如何滚动到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在我更改其文本值后始终滚动到底部?

swift scroll uitextview vertical-scrolling
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.