ios - 快速避免在 UIPinchGestureRecognizer 中捏三指
问题描述
根据苹果文档,捏是一个连续的手势,意味着用两根手指使用。即使用三个手指捏它似乎在 swift 4.1 中也能正常工作。
我试图打印触摸次数。即使用三根手指,它的触摸次数也为 2。它似乎检测到前 2 次手指触摸并忽略第三次。因此无法过滤。
@objc func pinch(pinchGesture: UIPinchGestureRecognizer){
if pinchGesture.state == UIGestureRecognizerState.began {
print("number of touches:\(pinchGesture.numberOfTouches)")
}
}
我在 viewDidLoad 中调用 setupGesture() 方法。所以它处理相关的用户捏手势。
func setupGestures(){
let pinch = UIPinchGestureRecognizer(target: self, action: #selector(self.pinch))
pinch.delegate = self
self.addGestureRecognizer(pinch)
}
有什么方法可以避免在 ios 中夹住三指?
解决方案
您可以过滤触摸:
func touchesBegan(_ touches: Set<UITouch>,
with event: UIEvent)
例如,从参数中获取触摸次数,touches
如果touches.count > 2
然后不对该手势采取行动 - 忽略它。
编辑(1):
在你的编辑之后,我有了另一个想法(我没有 Mac,所以我现在不能尝试这个)。尝试从委托中使用此方法。在接受之前,您应该能够取得联系。如果这将被调用一次,或者每次触摸(每个手指)调用一次,我看不到信息。也许你可以以某种方式使用它?
推荐阅读
- bash - 程序化 ngrok 隧道 url
- linux - 如何在 Linux 上运行从 Github 下载并解压的本地 python 3.5/3.6 包
- apache-kafka - 卡夫卡消费者性能
- c# - .net core 控制台应用实现持久缓存
- javascript - 用于构造数组的 JavaScript 扩展语法的 PHP 等效项是什么?
- python - Pymunk - 在每个时间点设置位置并且没有碰撞
- c# - 为什么字符串在firebase中返回null
- .net - 无法使用 REST API 解决 ServiceNow 事件
- python - Folium 中的断言错误 - “如果它不在图中,则无法渲染此元素”
- javascript - 动态输入字段问题