9

次のように、WKWebViewに長押しジェスチャ認識機能を実装しようとしています:

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機能をトリガーするようには見えません。

4

1 に答える 1

18

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")
    }
}
于 2014-11-05T13:17:07.910 に答える