2012-01-02 62 views
2

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

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

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

在viewDidLoad中,并把

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

在执行。然后,只要我触摸视图控制器上的任何位置,就会调用“touchesBegan”。

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

有没有办法捕捉这些事件而不禁用UIWebView想要做的一切?我不想失去滚动和其他功能。

谢谢。新年快乐。

回答

2

抓住UIWebView是一个潘多拉的盒子疼痛。既然你只需要点击,最简单的方法就是将UIView[UIColor clearColor]作为网页视图顶部的背景颜色。在此视图中,覆盖hitTest:(而不是覆盖touchesBegan:等)并用它来确定水龙头的位置。 hitTest:返回UIView,所以如果您希望网页视图响应水龙头,只需从您的hitTest:覆盖返回网络视图;否则返回叠加视图,该视图将接收所有的方法touches...

+0

我看到了类似的建议[虽然主张UIButton而不是UIView]并忽略它,因为它证明了在“普通”视图上触及相对无痛。但是我会就UIWebView的问题提出建议,并尝试一下UIView。谢谢。 – 2012-01-02 17:40:45