无法识别滑动手势

Posted

技术标签:

【中文标题】无法识别滑动手势【英文标题】:Swipe gesture not being recognised 【发布时间】:2018-11-29 15:33:39 【问题描述】:

这是我第一次使用 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 手势并没有没有做任何事情,所以手势争夺优先级没有问题。

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

【问题讨论】:

移除平移手势,直到找出滑动手势问题。愚蠢的问题,但你真的朝着正确的方向滑动了吗? @rmaddy 我正在朝着正确的方向滑动! ???我有问题中的平底锅只是为了表明它有效,但滑动没有...... 【参考方案1】:

我刚刚意识到,当我设置视图时,我将相机控件设置为:

gameView.allowsCameraControl = true // Camera control

什么时候应该是:

gameView.allowsCameraControl = false // Camera control

我认为这是因为相机覆盖了视图的手势,而我完全忘记了这一点!现在按预期运行良好,并希望它对将来也犯同样小错误的人有所帮助。

【讨论】:

以上是关于无法识别滑动手势的主要内容,如果未能解决你的问题,请参考以下文章

仅在滚动内容到达边缘时识别 UIScrollView 中的滑动手势

添加手势识别器以允许在 Swift 中的 MapView 上水平滑动

快速手势识别器 tableviewcell 被否决

滑动垂直手势无法使用UITableView

无法在 Swift 游乐场中向 SKScene 添加滑动识别器?

当 iCarousel 包含 UITableView 作为子视图时无法滑动