I had the same problem, and after much research, it looks like a bug in UIKit regarding scrollviews and AutoLayout. Here is the "fix" ...
In viewDidDisappear:save the current scrollview contentOffsetin the property and reset it to zero:
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
self.previousContentOffset = self.scrollView.contentOffset;
self.scrollView.contentOffset = CGPointZero;
}
viewWillAppear:, reset , . , :
- (void)viewWillAppear:(BOOL)animated
{
if (!CGPointEqualToPoint(self.previousContentOffset, CGPointZero))
{
dispatch_async(dispatch_get_main_queue(), ^{
self.scrollView.contentOffset = self.previousContentOffset;
});
}
}