我有UIScrollview
允许分页,内部有详细视图UIWebview
。我知道根据Apples Class Reference,你不应该这样做,但我没有看到另一种选择。
为了更好地回应和体验,我禁用了UIWebview
的滚动,其中包含:
[[[webView subviews] lastObject] setScrollEnabled:FALSE];
但是现在我正在寻找一种解决方案,使webview的大小合适,具体取决于内容。有没有一种简单的方法可以做到这一点,webview的宽度保持不变,但是当需要显示完整的文章时,高度会自动增长?这将删除滚动问题,因为它是scrollview,他将负责这个场景中的所有滚动。
这有意义吗?
答案 0 :(得分:0)
从UIWebView的文档中可以看出:
重要提示:您不应该嵌入UIWebView或UITableView对象 UIScrollView对象。如果这样做,可能会导致意外行为 因为两个对象的触摸事件可能混淆错误 处理。
更合适的方法是将UIWebView添加到下面带有UIScrollView(或UITableView)的UIViewController。我会意识到你在滚动视图中留下的空间量,特别是如果你正在处理iPhone。
希望这是一个正确方向的推动。
<强>更新强>
在研究之后(我确信会有一种方法),似乎我设法提出的最佳方法是将UIWebView添加到UITableView的标题视图中。
//create webview
_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 280.0)];
//load request and scale content to fit
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.stackoverflow.com/"]]];
[_webView setScalesPageToFit:YES];
//add web view to table header view
[[self tableView] setTableHeaderView:_webview];
这会在下面显示单元格之前将UIWebView添加到表格视图的标题中。请注意,表标题视图(以及页脚视图也)与节标题(和页脚)不同,因此如果您使用的是UITableViewStylePlain,仍然可以使用这两个。
请务必缩小网页视图的框架以允许下方的任何单元格可见,否则用户将无法滚动桌面视图,因为任何触摸都会被网页视图拦截。
这仍然违背了UIWebView文档(如上所述),但实际上,只要webview没有覆盖视图的整个可滚动区域,这个实现就可以正常工作。
以下是我制作的测试应用的屏幕截图:
希望有所帮助:)
答案 1 :(得分:0)
有一种更好的方法可以做到这一点。
从iOS 5.0起,apple公开了UIWebView中的UIScrollView。因此,要根据内容调整webview的大小,这就是你要做的。
实现webViewDidFinishLoad:并在该函数中执行此操作。
CGSize sz = [webView.scrollView contentSize]; CGRect rect = webView.frame; rect.size.height = sz.height; webView.frame = rect;
即使有多个加载开始和结束,也没关系,因为最终我们将调整Web视图的大小以适应内容。
如果您不希望用户看到动态调整大小,您可以将webview的alpha设置为0,当所有内容都加载并完成大小调整后,您可以将其转换为带动画的alpha 1。 / p>