2012-01-02 90 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