关闭复制/粘贴上下文菜单并删除UIWebView中的选择

时间:2015-07-09 23:00:34

标签: ios swift uiwebview

我有一个UIWebView,其中我实现了一个单击手势识别器。虽然我的问题在于选择,但我没有长时间保持识别器。的问题:

  • 在UIWebView中选择一些文本,从上下文菜单中选择复制。菜单应该消失。
  • 长按以进行文字选择,单击手势也会被调用。
  • 如果选择了文字,则在其他位置单击一下即可删除选择,如在Safari中。

...

func createGestureRecognizer() {
    // single tap
    let singleTapGesture = UITapGestureRecognizer(target: self, action: "handleSingleTap:")
    singleTapGesture.numberOfTapsRequired = 1
    singleTapGesture.delegate = self
    singleTapGesture.cancelsTouchesInView = false
    webView.addGestureRecognizer(singleTapGesture)
}

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
    if touch.view.isDescendantOfView(self.webView) {
        return true
    }
    return true
}

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    if otherGestureRecognizer.isKindOfClass(UITapGestureRecognizer) {
        otherGestureRecognizer.requireGestureRecognizerToFail(gestureRecognizer)
        // println("added failure requirement to: \(otherGestureRecognizer)")
    }
    return true
}

func handleSingleTap(tap: UITapGestureRecognizer) {
    …
}

编辑:有点工作。问题:进行初始文本选择需要比平时更长的保持时间。通常进行选择的正常长保持会调用我的单击识别器而不选择任何文本。

func handleSingleTap(tap: UITapGestureRecognizer) {
    let selection = webView.stringByEvaluatingJavaScriptFromString("window.getSelection().toString()")!
    if selection == "" {
        // do stuff
    } else {
        webView.userInteractionEnabled = false
        webView.userInteractionEnabled = true
        webView.stringByEvaluatingJavaScriptFromString("window.getSelection().removeAllRanges()")
    }

0 个答案:

没有答案
相关问题