2014-11-05 78 views
9

工作,我“米试图实现一个WKWebView长按手势识别如下:iOS8上的手势识别不上WKWebView与SWIFT

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") 

} 

我没有得到一个错误,但我不能似乎使它触发onLongPress功能。

+0

试试这个:https://github.com/theniceboy/HoldToSaveImage – David 2015-11-18 03:00:43

回答

16

您没有设置手势识别的delegate

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

如果它仍然无法正常工作,这可能可能是由于WKWebView已经有自己的手势识别器。然后将下面的方法添加到您的类:

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

而且在手势的事件方法检查开始:

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

它的工作原理!但现在这个事件不断发起而不是一次,那么处理它的正确方法是什么? – Gilad 2014-11-05 14:22:23

+0

很高兴帮助!我已经更新了我的答案。 – zisoft 2014-11-05 14:25:39

+0

非常感谢! – Gilad 2014-11-05 15:33:44