在以前的iOS版本中,我UITextView将使用滚动到底部
[displayText scrollRangeToVisible:NSMakeRange(0,[displayText.text length])];
Run Code Online (Sandbox Code Playgroud)
要么
CGFloat topCorrect = displayText.contentSize.height -[displayText bounds].size.height;
topCorrect = (topCorrect<0.0?0.0:topCorrect);
displayText.contentOffset = (CGPoint){.x=0, .y=topCorrect};
Run Code Online (Sandbox Code Playgroud)
但是前者现在会产生奇怪的效果,即从长文本的顶部开始,并在每次向视图添加文本时将滚动设置为动画.当我添加文本时,有没有办法弹出文本的底部?
我正在使用Xcode 5.1.1为ios7开发.由于有新文本进入UITextView,我希望它如果文本上升,为用户留出空间来查看新文本.我有一些有用的东西,但显示新文本的动画很尴尬.它几乎就像是从文本的最顶端开始,并且每次调用它时都会迅速降到最低点.
CGPoint p = [textview contentOffset];
[textview setContentOffset:p animated:NO];
[textview scrollRangeToVisible:NSMakeRange([textview.text length] - 1,0)];
每次输入新文本时都会调用此代码.我希望它像默认的iPhone信使一样顺畅,只是随便滑动.
以下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后,该解决方案似乎不再适用了.
如果没有跳跃行为,我无法弄清楚如何能够流畅地使用它?
uitextview ×3
objective-c ×2
scroll ×2
animation ×1
ios ×1
ios7 ×1
ios8 ×1
settext ×1
textkit ×1