2

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

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

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

在 viewDidLoad 和放置

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

在实施中。然后每当我触摸视图控制器上的任何位置时都会调用“touchesBegan”。

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

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

谢谢。新年快乐。

4

1 回答 1

2

捕捉对 a 的触摸UIWebView是痛苦的潘多拉魔盒。由于您只需要点击,因此最简单的方法可能是将 a作为背景颜色放置UIView[UIColor clearColor]Web 视图的顶部。在此视图中,覆盖hitTest:(而不是覆盖touchesBegan:等)并使用它来确定抽头的位置。hitTest:返回 a UIView,因此如果您希望 web 视图响应点击,只需从hitTest:覆盖中返回 web 视图;否则返回覆盖视图,然后它将接收所有touches...方法。

于 2012-01-02T16:28:37.857 回答