下面的视图控制器代码演示了我的问题。它打印一些调试语句以响应触摸事件和捏合手势。
如果手势识别器被禁用,我在屏幕上拖动手指,一切都按预期工作:控制器获得touchesBegan
,一堆touchesMoved
和{{1} }。但是,如果我启用手势识别器并将其touchesEnded
属性设置为delaysTouchesBegan
,并拖动单个手指,则控制器仅会收到true
和touchesBegan
个来电 - 不{{1 }}。
touchesEnded
的文档表明触摸事件会在手势识别器失败后堆积并传递。这是预期的行为 - 失去所有touchesMoved
事件?
delaysTouchesBegan
答案 0 :(得分:0)
每次手指之间的距离发生变化时,捏合手势识别器会报告更改。手指之间的距离报告为比例因子。因此,您需要查看比例因子,而不是touchesMoved。这有用吗?
@objc func pinched(_ gr: UIPinchGestureRecognizer) {
if gr.state == .began {
print("began")
}
if gr.state == .changed {
print("scale: \(gr.scale)")
}
if gr.state == .ended {
print("ended")
}
}