我正在开发一个基于UIWebView的iPad应用程序:简单来说,该应用程序显示一个大型交互式Web视图,并支持自定义手势。
我需要捕获代表Web视图上的单击事件,但仅当这些单击事件尚未被Web视图消耗时(即它们不是滚动/缩放操作的开始,它们不是链接上的单击,它们不是触发某些JavaScript的单击)。
UIWebView对其事件非常贪婪,在我的经验中,即使它们没有被消耗,它也倾向于不传播它们。为了捕获事件,我最终子类化了主窗口(请参见http://mithin.in/2009/08/26/detecting-taps-and-events-on-uiwebview-the-right-way/)。这个方法很有效,但问题是我无法识别我获取的单击是否已在Web视图中触发了一些JavaScript。
作为附加限制,我无法控制将在UIWebView中运行的JavaScript或将要显示的HTML。
我需要捕获代表Web视图上的单击事件,但仅当这些单击事件尚未被Web视图消耗时(即它们不是滚动/缩放操作的开始,它们不是链接上的单击,它们不是触发某些JavaScript的单击)。
UIWebView对其事件非常贪婪,在我的经验中,即使它们没有被消耗,它也倾向于不传播它们。为了捕获事件,我最终子类化了主窗口(请参见http://mithin.in/2009/08/26/detecting-taps-and-events-on-uiwebview-the-right-way/)。这个方法很有效,但问题是我无法识别我获取的单击是否已在Web视图中触发了一些JavaScript。
作为附加限制,我无法控制将在UIWebView中运行的JavaScript或将要显示的HTML。
所以,问题是这样的:有什么方法可以检测到所有且仅有在UIWebView中没有触发任何其他操作,特别是JavaScript操作的轻击事件?
~
如果您感兴趣,我正在开发的项目源代码在GitHub上:要找到它,只需让Google指向Baker Framework。
http://clickhandler
,而是使用handler:
,并使用request.URL.scheme
进行检查。这样可以轻松传递数据,例如handle:click
,并且比虚假主机更明确。 - Rob Napier