我正在使用 UITextView 为 iPad 开发一个简单的文本编辑应用程序。我在使用 UIScrollView 和 UITextView 时总是遇到一些问题。我想我对这两个人的期望太高了。
当我将 myTextView.text 设置为另一个 NSString 实例时,自动发生滚动。我可以通过设置来防止这种滚动
myTextView.scrollEnabled = NO;
myTextView.text = newText;
myTextView.scrollEnabled = YES;
但是,如果我更改 myTextView 的 selectedRange 属性,则会发生滚动。
具体来说,如果 selectedRange 的范围发生在当前屏幕中的文本上,则不会发生滚动。
例如,如果我通过点击“全选”属性选择所有文本,则不会发生滚动。但是,如果我通过将 selectedRange 设置为 NSMakeRange(0, [myTextView.text length]) 来选择所有文本,则会滚动到 END (最后一个插入符号位置)。
为了解决问题,
1)我保存了myTextView的原始内容偏移量。
CGPoint originalOffset = myTextView.contentOffset;
// change myTextView.selectedRange here
myTextView.selectedRange = originalOffset
但什么也没发生。
2)我使用 NSTimer 几秒钟后调用上面的代码,并正确滚动返回到原始位置(偏移量)。然而,首先滚动到末尾,然后滚动到顶部。
有没有办法完全阻止 UITextView 暂时滚动?