将触摸事件从 uiview 传输到 uiwebview

Posted

技术标签:

【中文标题】将触摸事件从 uiview 传输到 uiwebview【英文标题】:transmit touch events from uiview to uiwebview 【发布时间】:2010-08-04 17:22:43 【问题描述】:

如何在不使用未记录方法的情况下将触摸事件从 uiview 发送到 uiwebview?

我的问题是当用户触摸 uiwebview 时隐藏/显示标签栏和导航栏。这实际上需要自定义不建议的 uiwebview。我打算在 uiwebview 顶部放置一个透明视图,然后从那里接收触摸事件,使用它们,然后将其发送到 uiwebview。为此,我想知道如何将触摸事件从视图发送到 webview。

【问题讨论】:

【参考方案1】:

这是完全可能的。您需要将包含 UIWebView 或 UIWindow 的 UIView 子类化,然后中继触摸事件。参考this post。

【讨论】:

【参考方案2】:

这似乎是不可能的。您可以使用自定义叠加来捕获触摸事件,但无法调用您自己的 UITouch 事件,也无法更改现有 UITouch 对象的目标视图。

换句话说:只要手指碰到屏幕,创建的触摸事件就会包含目标。之后,它被刻在石头上,webview 永远不会响应它。 (有人请证明我错了!)

接下来最好的事情——我不推荐——是确定页面是否正在滚动,等待

[[browser stringByEvaluatingjavascriptFromString:@"scrollY+scrollX"] intValue];

在循环中变为非零。 Javascript 评估似乎有点慢;至少你不能每秒这样做 10 次。

【讨论】:

以上是关于将触摸事件从 uiview 传输到 uiwebview的主要内容,如果未能解决你的问题,请参考以下文章

将触摸事件从覆盖 UIView 转发到 UIWebView / 如何从代码将触摸事件发送到 uiwebview

调整大小的 UIView 上没有触摸事件

如何将触摸事件从 ScrollView 子视图传递到它的父视图

使用后将覆盖 UIView 的触摸事件转发到下面的 UIScrollView

UITextField 添加到 UIView 时不响应触摸事件

将触摸事件从视图发送到控制器