我有一个全屏文本视图的笔尖。在viewDidLoad
,
self.textView.attributedText = //some text;
它就这么简单,除了iPhone横向模式外,工作正常。
在横向模式下,当我导航到此页面时,此文本视图contentOffset.y
未启动为零。因此,默认情况下,滚动位置位于内容的中间(我希望这是在内容的开头)。
对于 iPad 和 iPhone 纵向模式,滚动位置位于内容的开头(contentOffset.y
为零)
在 iOS7 中,要滚动到顶部,您必须考虑内容插图。我还发现有必要等待下一次运行循环迭代,正如Altaveron所说。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
_textView.contentOffset = CGPointMake(-_textView.contentInset.left, -_textView.contentInset.top);
});
在iOS 7中,我也遇到了同样的问题。UITextView的滚动从横向视图的中间开始。我在视图控制器的顶部有导航栏。为了解决这个问题,我在viewDidLoad中设置了contentOffset,如下所示:
[self.textView setContentOffset: CGPointMake(0,-200) animated:NO];
我减去了 200 以平衡我的导航栏。它对我有用。由于它是在 viewDidLoad 中设置的,因此如果用户更改方向,y 偏移量不会重置为 0。
希望对您有所帮助!
以下解决方法对我有帮助。 setText 调用 UITextView
setText 方法。
[self performSelector:@selector(setText) withObject:nil afterDelay:0.f];
在 iOS8 或旧版本的 iOS 上,使用 textView.contentOffset = CGPointZero
.但是从iOS 9开始,我认为我们需要在viewDidLayoutSubviews()
上更新它
我的类似问题通过以下方式解决:
textView.contentOffset = CGPointMake(0.0, -50)
在某些设备上,textView 最初会稍微向下滚动。但我需要它滚动到顶部。
出于某种原因,将其设置为 CGPointZero 没有任何影响。但是,将偏移量 y 设置为较大的负数可以解决问题。