0

我的应用程序的主屏幕有一个 UIScrollView,其中包含一个 UIWebView 和一个 UIButton。滚动视图的内容大小在加载 Web 视图后相应设置。

用户只需按下标签栏中的图标即可随时返回主屏幕。此操作将所有视图控制器从导航控制器中清除,并将主屏幕的控制器添加到导航控制器。主屏幕重新显示正确,滚动视图工作正常。

我遇到的问题是当用户按下“返回”按钮返回主屏幕时,会弹出当前视图控制器。页面重新显示正常,但您无法再滚动。

我已经多次单步执行代码,并且无论您以哪种方式返回主屏幕,滚动视图的内容大小都被设置为相同的值。

需要注意的是,滚动视图仅在 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];
}
4

0 回答 0