捕获UIWebView中的触摸

时间:2012-01-02 16:16:15

标签: uiwebview touches

在UIWebView中捕获触摸事件时遇到问题。希望能够在滚动HTML页面上感知单词上的触摸,以便在触摸点处将超链接插入HTML [我完全控制]。显然,一些现有的代理已经感知了触摸,因为我得到了一个带有放大镜的“复制或定义”弹出窗口。

我已经能够在没有UIWebView的应用程序中的不同自定义UIViewController中捕获触摸事件,放置:

self.view.userInteractionEnabled = YES;
self.view.multipleTouchEnabled = YES;

在viewDidLoad中并放置

- (BOOL) canBecomeFirstResponder
{
 NSLog(@"canBecomeFirstResponder");
 return YES;
}

在实施中。每当我触摸视图控制器上的任何地方时,就会调用“touchesBegan”。

但是相同的代码在自定义视图控制器上无效,其中大部分屏幕都被UIWebView覆盖。奇怪的是,底部的小UIToolBar中的触摸确实称为“触摸开始”,但UIWebView中的某些内容正在抢占我的“touchesBegan”。

有没有办法捕获这些事件而不禁用UIWebView想要做的所有事情?我不想丢失滚动和其他功能。

感谢。新年快乐。

1 个答案:

答案 0 :(得分:2)

抓住UIWebView上的触碰是潘多拉的痛苦之盒。由于您只需要点按,因此最简单的方法是在网络视图顶部放置UIView [UIColor clearColor]作为背景颜色。在此视图中,覆盖hitTest:(而不是覆盖touchesBegan:等)并使用它来确定点击的位置。 hitTest:会返回UIView,因此,如果您希望网络视图响应点按,只需从hitTest:覆盖返回网络视图即可;否则返回叠加视图,然后接收所有touches...方法。