UITextView contentOffset未在iOS7上使用CGPointZero初始化

时间:2014-02-21 06:22:13

标签: ios iphone ios7 uitextview contentoffset

我有一个带全屏textView的笔尖。在viewDidLoad

self.textView.attributedText = //some text;

它就像这样简单,并且除了iphone横向模式外工作正常。

在横向模式下,当我导航到此页面时,此textView的contentOffset.y未启动为零。因此,默认情况下,滚动位置位于内容的中间(我预计这将位于内容的开头)。

对于ipad和iphone肖像模式,滚动位置位于内容的开头(contentOffset.y为零)

5 个答案:

答案 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设置为较大的负数就可以了。