iOS 9将UITextView滚动到顶部

sou*_*ned 6 objective-c uitextview ios

在iOS 7和/或8中,UITextView以编程方式滚动到顶部按预期方式工作viewDidLoad:

[self.someTextView scrollRangeToVisible:NSMakeRange(0, 0)];
Run Code Online (Sandbox Code Playgroud)

现在它只是加载到我的其他框架.我的猜测是它正在加载到我的contentOffsetUIEdgeInsetsMake(0, 0, 65, 0)

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

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


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

tul*_*dev 17

尝试将代码放入 viewDidLayoutSubviews


小智 5

我在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;
  }
}
Run Code Online (Sandbox Code Playgroud)

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