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:
。