UITextView setText不应该在ios8中跳转到顶部

Wou*_*ens 5 scroll uitextview settext contentoffset ios8

以下iOS 8代码每秒调用一次:

- (void)appendString(NSString *)newString toTextView:(UITextView *)textView {
    textView.scrollEnabled = NO;
    textView.text = [NSString stringWithFormat:@"%@%@%@", textView.text, newString, @"\n"];
    textView.scrollEnabled = YES;
    [textView scrollRangeToVisible:NSMakeRange(textView.text.length, 0)];
}
Run Code Online (Sandbox Code Playgroud)

目标是当文本从底部开始运行时,具有与XCode控制台相同的向下滚动行为.不幸的是,setText导致视图重置为顶部,然后我再次使用scrollRangeToVisible向下滚动.

这在iOS7中通过上面的代码得到了解决,但是在上周升级到iOS8后,该解决方案似乎不再适用了.

如果没有跳跃行为,我无法弄清楚如何能够流畅地使用它?

fra*_*ank 28

我也遇到了这个问题.你可以试试这个.

textView.layoutManager.allowsNonContiguousLayout = NO;

参考:http://hayatomo.com/2014/09/26/1307


小智 -2

尝试仅将文本添加到 UITextView (不带scrollRangeToVisible/scrollEnabled)。看来 iOS8 SDK 中不再需要启用/禁用滚动的 hack。UITextView 自动滚动。