在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想要做的所有事情?我不想丢失滚动和其他功能。
感谢。新年快乐。
答案 0 :(得分:2)
抓住UIWebView
上的触碰是潘多拉的痛苦之盒。由于您只需要点按,因此最简单的方法是在网络视图顶部放置UIView
[UIColor clearColor]
作为背景颜色。在此视图中,覆盖hitTest:
(而不是覆盖touchesBegan:
等)并使用它来确定点击的位置。 hitTest:
会返回UIView
,因此,如果您希望网络视图响应点按,只需从hitTest:
覆盖返回网络视图即可;否则返回叠加视图,然后接收所有touches...
方法。