我的应用程序的主屏幕有一个UIScrollView,其中包含一个UIWebView和一个UIButton。加载Web视图后,滚动视图的内容大小会相应设置。
只需按下标签栏中的图标,用户就可以随时返回主屏幕。此操作会清除导航控制器中的所有视图控制器,并将主屏幕的控制器添加到导航控制器。主屏幕重新正确显示,滚动视图工作正常。
我遇到的问题是用户按下“后退”按钮返回主屏幕,弹出当前视图控制器。该页面重新显示正常,但您无法再滚动。
我已多次遍历代码,无论您返回主屏幕的方式,滚动视图的内容大小都设置为相同的值。
重要的是要注意,scrollview仅在iOS 7下停止工作。它在iOS 6下按预期工作。
网页加载在viewWillAppear:
中-(void)viewWillAppear:(BOOL)animated
{
NSString *fullURL = @"http://somewhere.com/app-homepage/index.html";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:requestObj];
[self.scrollView setContentOffset:CGPointZero];
}
滚动视图在webViewDidFinishLoad中动态调整大小:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
webView.scrollView.scrollEnabled = NO;
CGRect frame = webView.frame;
frame.size.height = 1;
webView.frame = frame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
self.webViewHeightConstraint.constant = frame.size.height;
self.featuredCelebritiesButtonTopVerticalSpaceConstraint.constant = frame.size.height + 8;
CGSize svContentSize = self.scrollView.contentSize;
svContentSize.height = frame.size.height + 65;
self.scrollView.contentSize = svContentSize;
webView.frame = frame;
[self.activity stopAnimating];
}