ios - 平移、点按和长按识别器有效,但滑动手势无效
问题描述
我已经测试了以下代码,只有平移、点击和长按识别器的选择器激活。我尝试在 UIView 子类中添加识别器并将识别器添加为参数。我唯一的猜测是平底锅、水龙头和长按会以某种方式吞噬所有的触摸,但我希望它们中只有一个能在这种情况下工作。由于所有识别器都遵循相同的程序,我真的不明白问题是什么。提前感谢您的帮助。
init(level: LevelView) {
self.level = level
left = UISwipeGestureRecognizer(target: self, action: #selector(swipeLeft))
right = UISwipeGestureRecognizer(target: self, action: #selector(swipeRight))
up = UISwipeGestureRecognizer(target: self, action: #selector(swipeUp))
down = UISwipeGestureRecognizer(target: self, action: #selector(swipeDown))
tap = UITapGestureRecognizer(target: self, action: #selector(tap(_:)))
pan = UIPanGestureRecognizer(target: self, action: #selector(pan(_:)))
long = UILongPressGestureRecognizer(target: self, action: #selector(long(_: )))
long.minimumPressDuration = 0.3
long.allowableMovement = 30
left.direction = .left
right.direction = .right
up.direction = .up
down.direction = .down
for rec in [up, down, right, left, tap, long, pan] {
rec!.cancelsTouchesInView = false
level.addGestureRecognizer(rec!)
}
}
更新:平移识别器立即识别触摸,而不是将它们传递给滑动识别器。由于我希望滑动识别器优先,我添加了所有滑动手势在平移识别器能够识别之前失败的条件。那行得通。感谢 Matt 提供的有用提示。
解决方案
推荐阅读
- c++ - c ++将结构数组传递给函数
- react-native - 在 React Native 中保存数据
- python - 长轮询的 Ajax 无法在网页上显示 celery 结果
- java - 如何在 Janino 脚本中表示值列表
- php - 将JSON插入Mysql问题(ajax/php)
- docker - 使用docker将kafka主题数据写入redis
- react-native - 反应导航中 Stack 和 Swtich Navigator 之间的嵌套导航器之间的导航
- python - Virtualbox上的Python脚本非常慢
- javascript - 以编程方式附加脚本时未捕获的异常
- java - 如何通过共享对象正确使用信号?