我已经设置了一个UILongPressGestureRecognizer,在iOS 13之前的版本中工作正常,但在这个版本中要检测第二次长按,我必须按两次。
也就是说:
1º LongPress -> Work Fine显示“长按”
2º LongPress ->不工作
3º LongPress -> Work Fine显示“长按”
4º LongPress ->不工作
...
这是我的代码。
let longTapGesture = UILongPressGestureRecognizer(target: self, action: #selector(longTap))
longTapGesture.delegate = self
longTapGesture.numberOfTouchesRequired = 1
longTapGesture.cancelsTouchesInView = false
mapView.addGestureRecognizer(longTapGesture)
调用的函数为:
@objc func longTap(sender: UIGestureRecognizer){
print("long tap")
.....
}
2条答案
按热度按时间kgsdhlau1#
这个问题的解决方案是允许同时的手势。只需设置长按手势的
delegate
并实现以下delegate方法:就是这样。Map视图上的长按手势现在每次都有效。
作为演示,创建一个基于Swift和故事板的新iOS项目。将提供的
ViewController.swift
实现替换为以下内容:请注意,
shouldRecognizeSimultaneouslyWith
会被调用很多次。似乎至少有3个其他手势,包括另一个长按手势,预计两次触摸。因此,最好不要设置自己的长按手势需要两次触摸。x3naxklr2#
在iOS 13中,UILongPressGestureRecognizer仅识别每次触摸的单次长按。您可以尝试将“delaysTouchesBegan”设置为false。
例如:
以下是我找到的资源:delaysTouchesBegan Doc