确定 UIWebView 是不是处理事件

Posted

技术标签:

【中文标题】确定 UIWebView 是不是处理事件【英文标题】:Determine if UIWebView handled event确定 UIWebView 是否处理事件 【发布时间】:2013-08-24 06:55:35 【问题描述】:

当用户在 UIWebView 中点击时,我想显示/隐藏导航栏。只有当 UIWebView 没有对这个事件做出任何响应(选择的文本,调用的 javascript)时,我才想这样做。

我找到了确定触摸坐标的文章: http://mithin.wordpress.com/2009/08/26/detecting-taps-and-events-on-uiwebview-the-right-way/ 但是,如果 UIWebView 内部发生了什么事情,则没有任何信息。

编辑:这个解决方案 Intercept unused tap events in a UIWebView 在我的情况下并不总是有效,我有非常复杂的带有 iframe 的 html 结构。

【问题讨论】:

wyldco.com/blog/2010/11/how-to-capture-touches-over-a-uiwebview你能看看这个链接吗... 我看过这个链接,作者展示了如何拦截触摸,而不是如何处理 UIWebView 是否响应事件。 【参考方案1】:

我认为您可以利用UIWebViewDelegate 并实现以下方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

- (void)webViewDidStartLoad:(UIWebView *)webView

管理是否显示导航栏或隐藏它。

【讨论】:

这些回调不会被所有的Js交互调用,所以这里不会涵盖所有的情况。

以上是关于确定 UIWebView 是不是处理事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIWebView 上模拟点击事件?

如何在 uiwebview iOS 中处理 YouTube 视频事件(开始、结束等)

从事件处理程序确定发送者对象

如何控制 UIWebView 上的触摸? (苹果手机)

如何在 UIWebView 上的 Long Tap 手势上创建 Tap 事件?

类事件处理程序未检测是不是选中复选框