0

我已经坚持了几个小时了。我正在尝试根据 UIWebView 的内容大小动态调整其大小。我的问题是,当我在 iPhone 5 上运行我的应用程序时,一切正常,但在 iPhone 4(和模拟器 - 3.5 英寸)上我没有得到相同的行为。

- (void)webViewDidFinishLoad:(UIWebView *)webview {

    CGFloat height = webview.scrollView.contentSize.height;
    _descriptionHeight = height;
    self.webView.scrollView.scrollEnabled = NO;
    self.webView.scrollView.bounces = NO;
}

使用我的这个版本的代码,在 iPhone 4 上,height无论内容是什么,它总是等于 0。我还尝试使用 JS 计算它

[[webview stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue]

但在这种情况下,返回值始终为 480(即屏幕高度)。

这两种方法在 iPhone 5 上都可以正常工作,问题只在 iPhone 4 上(都运行 iOS6)。

有任何想法吗?

编辑: 我设法找到了重现问题的方法。我有一个包含一个部分的表格视图,8 个静态单元格。我的 webview 在第 4 个单元格内(从顶部开始,行 = 3)。如果我将单元格移动到第一个位置(行 = 0),一切正常。如果我将它移回第四个位置,我可以重现我的问题。大家觉得可能是什么。UITableView 中的错误?

4

1 回答 1

0

我找到了。在查看我的屏幕后,我最终意识到在 iPhone 5 上,UIWebView当屏幕加载时会显示包含我的单元格,就像 iPhone 4 一样,因为屏幕更小,我不得不滚动一点才能看到我的单元格.

我想,在 iPhone 4 上,由于最初看不到 web 视图,这就是为什么我不断得到有趣的结果。

我最终将webView loadHTMLString:选择器移入

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

现在一切正常。

所以我设法解决了我的问题,但是如果有人可以解释为什么你不能在 UITableView 中获得 UIWebView 的内容大小,如果它当前不可见,那将不胜感激。

于 2013-05-27T02:27:50.600 回答