捕捉在 UITableView 中显示的 UIWebView 内触摸

Posted

技术标签:

【中文标题】捕捉在 UITableView 中显示的 UIWebView 内触摸【英文标题】:Catch touched inside UIWebView displayed in an UITableView 【发布时间】:2016-03-15 15:51:12 【问题描述】:

我正在开发一个 ios 应用程序,它用于 UITableView 的一个视图。 当单元格被触摸时,我想将它们从默认大小(常量)调整为实际大小(存储在选项卡中)。

我首先尝试将此代码放在didSelectRowAtIndexPath 函数中,但从未调用此函数...

我浏览了一些教程,我的班级已经有了这个: - 我的课程扩展了 UITableViewDelegate、UITableViewDataSource - 在 ViewDidLoad 我有这个代码:

self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.allowsSelection = true

我可能知道问题出在哪里。我的 UITableView 是分组的,每个部分由一个单元格组成。 每个单元格都是一个自定义单元格,其中包含一个 UIWebView。总结一下 : 我的视图 > tableView > MyCellCustom > MyWebViewCustom

我读到触动的事件可能已被 WebView “吃掉”。如何知道问题是否来自于此?如何避免这种情况?

顺便说一句,我什至不确定问题是否来自于此。我只是感到沮丧,因为我经常使用didSelectRowAtIndexPath,而我从来没有遇到过这种麻烦。

然后,我尝试像这样将UITapGestureRecognizer 添加到我的所有 UIWebView 中:

let indicationTap = UITapGestureRecognizer()
indicationTap.delegate = self
indicationTap.addTarget(self, action: "SingleTap:")
indicationTap.numberOfTapsRequired = 1
indicationTap.numberOfTouchesRequired = 1
self.indication.webView.scrollView.addGestureRecognizer(indicationTap)

然后这个函数:

func SingleTap(gestureRecognizer:UIGestureRecognizer)
    print("touch detected")

但它仍然无法正常工作... 我不知道出了什么问题以及在 UIWebView 中处理触摸事件的最佳方式是什么。

提前感谢您的回答, 祝你今天过得愉快。 汤姆。

【问题讨论】:

嗨汤姆,如果可以删除用户交互到 web 视图 addGestureRecognizer in cellForRowAtIndexPath 为每个 Web 视图查看是否是问题所在。 您好,我了解您的问题。由于 webview,触摸忽略。采取点击手势并将此点击手势添加到每个单元格中的 web 视图。然后你可以处理 webview 上的点击。为了更好地理解,请参阅link 我尝试添加 TapGestureRecognizer,但它也没有工作......我已经更新了我的问题,让你看看我做了什么 【参考方案1】:

如果您需要在UIWebView 中保留触摸事件,并且还需要让触摸事件触发行选择,则应将UIWebView 包装在UIView 的子类中,然后在didSelectRowAtIndexPath: 中使用它UITableView 的方法。

这应该会有所帮助:How to Get webview from UITableView didselectrowatindexpath?

【讨论】:

我在 UIWebView 类的 init 方法中添加了“self.userInteractionEnabled = false”,但问题仍然存在。实际上我需要保持 userInteraction 启用,因为我有基于 html 的功能,它加载在里面 ... @TomGiraudet 我编辑的答案在这种情况下可能会更有帮助。 我的 WebView 已经包裹在 UITableViewCell 的子类中

以上是关于捕捉在 UITableView 中显示的 UIWebView 内触摸的主要内容,如果未能解决你的问题,请参考以下文章

拦截 UITableView 滚动触摸

iOS 11 大标题导航栏捕捉而不是平滑过渡

UITableView 在旋转时使用自动布局调整大小

UiWebView 全屏显示

如何在没有数组的 UITableView 中显示 UITableView Cell?

在 UITableView 中显示单元格的奇怪问题