2014-11-05 7 views
9

i "versuchen, einen lange drücken Gestenerkenner auf einem WKWebView zu implementieren, wie folgt:ios8 Gestenerkenner funktionieren nicht auf WKWebView mit schnellen

var webView: WKWebView? 
let longPressRecognizer = UILongPressGestureRecognizer() 

override func loadView() { 
    super.loadView() 

    var webViewConfig: WKWebViewConfiguration = WKWebViewConfiguration() 
    webViewConfig.allowsInlineMediaPlayback = true 
    webViewConfig.mediaPlaybackRequiresUserAction = false 

    self.webView = WKWebView(frame: self.view.frame, configuration: webViewConfig) 
    self.view = self.webView! 

    //hook the long press event 
    longPressRecognizer.addTarget(self, action: "onLongPress:") 
    self.webView!.scrollView.addGestureRecognizer(longPressRecognizer) 
}  

func onLongPress(gestureRecognizer:UIGestureRecognizer){ 
    NSLog("long press detected") 

} 

ich nicht einen Fehler, aber ich kann nicht scheinen zu lassen es löst die onLongPress Funktion.

+0

versuchen Sie dies: https://github.com/theniceboy/HoldToSaveImage – David

Antwort

16

Sie nicht die delegate des Gestenerkenner gesetzt hat.

//hook the long press event 
longPressRecognizer.delegate = self 
longPressRecognizer.addTarget(self, action: "onLongPress:") 
self.webView!.scrollView.addGestureRecognizer(longPressRecognizer) 

im Falle, dass es immer noch nicht funktioniert, kann dies wahrscheinlich aufgrund WKWebView hat bereits eigene Gestenerkenner. Dann fügen Sie die folgende Methode, um Ihre Klasse:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 

Und in Ihrer Ereignismethode Prüfung für die Geste begann:

func onLongPress(gestureRecognizer:UIGestureRecognizer){ 
    if gestureRecognizer.state == UIGestureRecognizerState.Began { 
     NSLog("long press detected") 
    } 
} 
+1

es funktioniert ! aber jetzt wird das Ereignis kontinuierlich statt einmal gefeuert, was wäre der richtige Weg, damit umzugehen? – Gilad

+0

Gut zu helfen! Ich habe meine Antwort aktualisiert. – zisoft

+0

funktioniert super danke! – Gilad