首页 > 解决方案 > 平移、点按和长按识别器有效,但滑动手势无效

问题描述

我已经测试了以下代码,只有平移、点击和长按识别器的选择器激活。我尝试在 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 提供的有用提示。

标签: iosswiftuigesturerecognizeruiswipegesturerecognizer

解决方案


推荐阅读