【发布时间】:2013-05-27 00:10:52
【问题描述】:
我已经坚持了好几个小时了。我正在尝试根据 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 中的错误?
【问题讨论】:
-
我刚刚在 iPhone 4 (iOS6) 和模拟器 (iOS5 & iOS6) 上试用了您的代码,对我来说效果很好。我无法重现您遇到的问题。问题可能在于您如何设置
UIWebView,而不是webViewDidFinishLoad:。对不起,我帮不上什么忙了。 -
@StephSharp 感谢您的尝试。我的 webView 设置在故事板中,所以也许我会尝试重做那个屏幕。