我使用长按手势识别器来设置我自己的wkwebview链接动作表,但是在我释放手指之前动作表不会出现(我试过recognizer.began
但它不起作用...)
那么,我如何拦截长按识别器?我可以添加一个计时器来阻止它吗?怎么样?
P.S。这是我的代码:
//long press to show the action sheet
longPressRecognizer.delegate = self
longPressRecognizer.addTarget(self, action: "onLongPress:")
self.webView.scrollView.addGestureRecognizer(longPressRecognizer)
func onLongPress(gestureRecognizer:UIGestureRecognizer){
longPressSwitch = true
}
答案 0 :(得分:0)
使用NSTimer而不是长按识别器。这是一个快速实现示例(Swift 2):
var sameTouch = false
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
_ = NSTimer.scheduledTimerWithTimeInterval(1.5, target: self, selector: "longPressed", userInfo: nil, repeats: false)
sameTouch = true
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
sameTouch = false
}
func longPressed() {
if(sameTouch) {
longPressSwitch = true
sameTouch = false
}
}
非常简单的东西;当'触摸开始'时,我们启动计时器,该计时器将运行1.5秒。我们说_ = ...
因为我们永远不会再次引用该计时器,所以不需要命名它。我们还将变量sameTouch
设置为true。
如果touchesEnded,我们将sameTouch
设置为false。这是因为这会向longPressed()
表明触摸是提前释放的。
在longPressed()
中,我们将longPressSwitch
设置为true - 这是来自您的代码。线sameTouch = false
不是100%必需的,但它说明了我眼中系统的关闭。
希望,这有帮助!如果您有任何疑问,请告诉我!