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



我有一个全屏文本视图的笔尖。在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 设置为较大的负数可以解决问题。

最新更新