如何使用 UITableView 创建包含 UIWebView 的可滚动视图

Posted

技术标签:

【中文标题】如何使用 UITableView 创建包含 UIWebView 的可滚动视图【英文标题】:How to create a scrollable view containing UIWebView with a UITableView 【发布时间】:2013-10-17 21:58:14 【问题描述】:

我的 iphone 应用中有一个 UIView,其中包含一个 UIWebView 和一个 UITableView。

问题是,内容高度可变,所以我希望屏幕按如下方式工作:

UIWebView 的所有内容都会显示出来(它可能会比屏幕大)。 当用户结束滚动 web view 的内容后,他开始滚动 table view 的内容,形成一个单一的可滚动视图。

问题是,网页视图和表格视图都有自己的滚动字段,而苹果的文档特别告诉我不要做我想做的事:

重要提示:您不应将 UIWebView 或 UITableView 对象嵌入 UIScrollView 对象。如果这样做,可能会导致意外行为 因为两个对象的触摸事件可能会混淆和错误 处理。

有没有办法做我想做的事,或者我应该重新考虑我的界面?

【问题讨论】:

【参考方案1】:

您可以在tableView的tableHeaderView中添加WebView,并将TableHeaderView的高度调整为您的web view的总高度。这样,您只有一个 tableView,它在其上方显示一个 WebView 并一起滚动。

【讨论】:

【参考方案2】:

尽管 Apple 发出警告,但仍可以这样做。我自己为生产应用程序完成了它,并且效果很好。我面前没有代码,但我大致做了以下操作:

1) 获取网络视图内容的高度,并设置网络视图的框架以匹配该高度。

2) 对表格视图执行相同操作

上述两个步骤可确保当您与应用交互时,内部滚动视图不会尝试滚动其内容。唯一可以滚动的是外部滚动视图。

3) 最后,将外层滚动视图的内容大小设置为网页视图高度和表格视图高度之和。

【讨论】:

以上是关于如何使用 UITableView 创建包含 UIWebView 的可滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

如何创建高度由其标签高度确定的 UITableView 标头?

如何使用多个数据打印带有标题和uitableview的uiwebview

如何在 .xib 文件中使用自定义 UITableView 和 UITableViewCell?

如何让 uitableview 知道在哪里滚动未创建的视图

Swift:使用 UITableView 的数组大小

如何更改 UItableview 的数据?