2011-06-07 33 views
3

我曾嘗試過在本網站上提供的各種解決方案,以及其他人在uiwebview上實現觸摸事件。但我仍然無法做到這一點。其實,我已經創建了一個文章閱讀器應用程序。在這裏,我在正常的uiview上添加了uiwebview。現在,我想跟蹤該特定webview上的一些用戶觸摸事件。 當我在普通視圖上執行此操作時,它可以很好地工作。但如果我在webview上嘗試它。它停止工作。 的解決方案,我嘗試過是如何在uiwebview中實現觸摸事件?

  1. 實現像 touchbegan touchended觸摸方法 touchmoved 觸摸取消

2實施uigesturerecognizer 3實施窗口的觸摸事件,如發送事件現在

如果任何人都可以幫助我或告訴我我做錯了什麼或新的解決方案(除此之外),那麼我會很感激。

回答

2

將一個透明的UIVIew放在UIWebView的頂部以捕捉觸摸。然後,您可以對它們進行操作,或者使用touchesBegan deletage方法將它們傳遞給UIWebView。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self.myUIWebView touchesBegan:touches withEvent:event]; 
} 

入住此之前的職位的詳細信息:iOS - forward all touches through a view

+0

但我的uiwebview包含滾動。如果我這樣做,你認爲它的滾動會被阻止。 – 2011-06-07 04:43:00

+0

我試過你的解決方案bt問題是運行時警告發生ie無法恢復先前選定的幀。 – 2011-06-07 05:33:24

0

我子類UIWebView,公正「內吸取」到了手勢識別的子視圖兩層深(你可以去遞歸但那是不夠iOS6-7)。然後,您可以根據觸摸位置和手勢識別器的狀態執行任何操作。

for (UIView* view in self.subviews) { 
    for (UIGestureRecognizer* recognizer in view.gestureRecognizers) { 
     [recognizer addTarget:self action:@selector(touchEvent:)]; 
    } 
    for (UIView* sview in view.subviews) { 
     for (UIGestureRecognizer* recognizer in sview.gestureRecognizers) { 
      [recognizer addTarget:self action:@selector(touchEvent:)]; 
     } 
    } 
}