UIWebView内容大小始终返回相同的值

时间:2013-05-27 00:10:52

标签: ios uiwebview

我已经被困在这几个小时了。我正在尝试根据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上运行良好,问题仅在于4(都运行iOS6)。

有什么想法吗?

修改 我设法找到了重现问题的方法。我有一个包含一个部分的表视图,8个静态单元格。我的webview位于第4个单元格内(从顶部开始,行= 3)。如果我将我的单元格移动到第一个位置(行= 0),一切正常。如果我把它移回第4位,我可以重现我的问题。你们认为它可能是什么? UITableView中的一个错误?

1 个答案:

答案 0 :(得分:0)

我找到了。看完我的屏幕后,我最终意识到在iPhone 5上,当屏幕加载时显示包含我的UIWebView的单元格,就像iPhone 4一样,因为屏幕较小,我不得不滚动一个有点看我的牢房。

我认为,在iPhone 4上,由于最初看不到网页视图,这就是我继续获得有趣结果的原因。

我最终在

中移动了webView loadHTMLString:选择器
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

现在一切正常。

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