ios - 使用 scrollRangeToVisible() 时,UITextView 总是从头开始滚动

标签 ios uiscrollview uitextview

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

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

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

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

这里的 history 是一个 UITextView 导出。

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

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

最佳答案

此链接 ( 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/

相关文章:

ios - UIScrollView 不在 Swift 中滚动

ios - 将图像上传到 firebase 时出现 NSInvalidArgumentException - ios

ios - Collection View Cell Circle Loader 影响多个单元格和闪烁

ios - SwiftUI 中 ScrollView 下的按钮

ios - 将光标放在 UITest 下 UITextView 的末尾

ios - UITextView 自定义拼写和自动更正

objective-c - 识别NSString中的特殊字符

ios - WebView 与触摸事件 UITapGestureRecognizer 无法识别的选择器

iphone - 获取半径内的位置

ios - ScrollView 还是 CollectionView?