我也遇到过同样的问题,经过大量调查,这似乎是 UIKit 中与滚动视图和 AutoLayout 相关的错误。这是“修复”...
在 viewDidDisappear: 中,将当前的滚动视图 contentOffset 保存到一个属性中,并将其重置为零:
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
self.previousContentOffset = self.scrollView.contentOffset;
self.scrollView.contentOffset = CGPointZero;
}
然后,在 viewWillAppear: 中,将内容偏移重置回原来的值。我必须将它分派到主队列中才能使其正常工作:
- (void)viewWillAppear:(BOOL)animated
{
if (!CGPointEqualToPoint(self.previousContentOffset, CGPointZero))
{
dispatch_async(dispatch_get_main_queue(), ^{
self.scrollView.contentOffset = self.previousContentOffset;
});
}
}