我有一个带全屏textView的笔尖。在viewDidLoad
,
self.textView.attributedText = //some text;
它就像这样简单,并且除了iphone横向模式外工作正常。
在横向模式下,当我导航到此页面时,此textView的contentOffset.y
未启动为零。因此,默认情况下,滚动位置位于内容的中间(我预计这将位于内容的开头)。
对于ipad和iphone肖像模式,滚动位置位于内容的开头(contentOffset.y
为零)
答案 0 :(得分:4)
在iOS7中,要滚动到顶部,您必须考虑内容插入。我还发现有必要等待下一次runloop迭代,正如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);
});
答案 1 :(得分:3)
在iOS 7中,我也遇到了同样的问题。 UITextView的滚动从横向视图的中间开始。我在视图控制器的顶部有navigationBar。为了解决这个问题,我在viewDidLoad中设置了contentOffset,如下所示:
[self.textView setContentOffset: CGPointMake(0,-200) animated:NO];
我已减去200以与导航栏平衡。它对我有用。由于它是在viewDidLoad中设置的,因此如果用户更改方向,则y offset不会重置为0.
希望它有所帮助!
答案 2 :(得分:3)
以下解决方法对我有所帮助。 setText调用UITextView
setText方法。
[self performSelector:@selector(setText) withObject:nil afterDelay:0.f];
答案 3 :(得分:1)
在iOS8或更早版本的iOS上,使用textView.contentOffset = CGPointZero
。
但是从iOS 9开始,我认为我们需要在viewDidLayoutSubviews()
答案 4 :(得分:0)
我的类似问题通过以下方式解决:
textView.contentOffset = CGPointMake(0.0, -50)
在某些设备上,textView最初会略微向下滚动。但我需要它滚动到顶部。
出于某种原因,将其设置为CGPointZero没有任何影响。但是,将偏移量y设置为较大的负数就可以了。