滑动手势未被识别

Swipe gesture not being recognised

这是我第一次使用 UI 手势识别器。我正在尝试将其实现到 SceneKit 中,以控制相机(没有更好的自定义控件方法吗?)。

下面是我的视图控制器中的一瞥:

var gameView: SCNView!

/* ... */

override func viewDidLoad() {
    super.viewDidLoad()

    // Setup game
    /* ... */

    // Gestures
    let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(swipeRightGesture))
    swipeRight.direction = .right
    gameView.addGestureRecognizer(swipeRight)

    let pan = UIPanGestureRecognizer(target: self, action: #selector(panGesture))
    gameView.addGestureRecognizer(pan)
}

@objc func swipeRightGesture() {
    print("SWIPE!")
}
@objc func panGesture() {
    print("PAN!")
}

我可以看到我的 Pan 手势工作得很好。但是,我的 Swipe 手势似乎根本不起作用。删除 Pan 手势 没有 做任何事情,所以手势争夺优先级没有问题。

为什么这不能识别我的手势?我是否忘记了一些重要的事情(例如代表)?

我刚刚意识到,当我设置视图时,我是这样设置相机控件的:

gameView.allowsCameraControl = true // Camera control

真正应该是什么时候:

gameView.allowsCameraControl = false // Camera control

我假设这是因为相机覆盖了对视图的手势,我完全忘记了这一点!现在运行良好,希望对以后犯同样小错误的人有所帮助。