iOS 9将UITextView滚动到顶部

在iOS 7和/或8中,以编程方式将我的UITextView滚动到顶部按照预期在viewDidLoad

 [self.someTextView scrollRangeToVisible:NSMakeRange(0, 0)]; 

现在它只是加载到我的其他框架。 我的猜测是它加载到我的contentOffset UIEdgeInsetsMake(0, 0, 65, 0)

我如何使这项工作> = iOS9?

注意:我已经尝试过放入viewDidAppear没有结果


编辑问题出现在我的UITextView文本大于其视图高度的情况下。 我使用UIEdgeInsets因为视图是以模态方式呈现的,并且比屏幕边界稍大。 但是,在这种情况下, scrollRangeToVisible仍然适用于iOS 7/8但不适用于iOS9

尝试将您的代码放在viewDidLayoutSubviews

我在iOS 9上遇到了同样的问题,这个解决方法修复了它:

 @property (nonatomic) bool workaroundIOS9Bug; - (void)viewDidLoad { self.workaroundIOS9Bug = [[UIDevice currentDevice].systemVersion floatValue] >= 9.0; } -(void)viewDidLayoutSubviews { if (self.workaroundIOS9Bug) { self.textView.contentOffset = CGPointZero; self.workaroundIOS9Bug = false; } } 

这意味着,只有在第一次布置子视图时才需要额外清除contentOffset。 当用户旋转屏幕或在视图中做其他事情时,一直这样做会很痛苦。

你尝试过使用过吗?

 [self.someTextView scrollRectToVisible:CGRectMake(0, 0, x, x) animated:YES] 

其中x是一些非零宽度? 似乎scrollRectToVisible:滚动比scrollRangeToVisible:更远scrollRangeToVisible: