我正在调试记录我的操作的 UITextView

例如如果我按下屏幕上的一个特殊按钮,这个 UITextView 将显示我刚刚按下的按钮。当我按下更多按钮时,它会记录更多信息,因此我可以轻松滚动 UITextView 以查看我过去的操作。

因为 UITextView 本身不会随着文本的增加而滚动,所以当有东西登录时,我尝试让它滚动到最后一行。
我尝试使用下面的 scrollRangeToVisible() 方法

history.scrollRangeToVisible(NSMakeRange(count(history.text!) - 1, 1))

这里的历史是一个 UITextView 导出。

问题是,这个方法总是让 UITextView 从头滚动到指定的 NSRange 。更具体地说,它将 View 重置为文本的开头,然后向下滚动到 NSRange 所在的位置。我要它直接把 scroll 下来,

有人可以解决这个问题吗?非常感谢。

最佳答案

此链接 ( what to use instead of scrollRangeToVisible in iOS7 or TextKit ) 建议关闭滚动,进行更改然后将其打开。

history.scrollEnabled = NO;
[history scrollRangeToVisible:NSMakeRange(history.text.length - 1,0)];
history.scrollEnabled = YES;

编辑

使用讨论后解决:
history.layoutManager.allowsNonContiguousLayout = NO;

在这里看到这个:UITextView setText should not jump to top in ios8

关于ios - 使用 scrollRangeToVisible() 时,UITextView 总是从头开始滚动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29939448/

10-12 00:31
查看更多