目标是针对同一个 SCNScene 实现两个平移手势:一个用一根手指,另一个用两根手指。

下面的这段代码不起作用。即使为手势分配了不同的选择器,也不会调用单指平移功能。单指平底锅和双指平底锅都调用 sceneViewPannedTwoFingers

从阅读其他问题来看,似乎 shouldRecognizeSimultaneouslyWithGestureRecognizer 可能是答案,但这些平底锅不会同时发生。它应该是单指平底锅或双指平底锅,切勿同时使用。

是否可以有如上所述的两个平移手势?如果是这样,这样做的正确方法是什么?

    // Handle one-finger pans
    let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(sceneViewPannedOneFinger))
    sceneView.addGestureRecognizer(panRecognizer)

    // Handle two-finger pans
    let twoFingerPanRecognizer = UIPanGestureRecognizer(target: self, action: #selector(sceneViewPannedTwoFingers))
    sceneView.addGestureRecognizer(twoFingerPanRecognizer)


func sceneViewPannedTwoFingers(sender: UIPanGestureRecognizer) {
    print("two finger pan!!!")
}


func sceneViewPannedOneFinger(sender: UIPanGestureRecognizer) {
    print("one finger pan!!!")
}

最佳答案

您需要将 UIGestureRecognizerDelegate 添加到您的 View Controller 并将手势识别器委托(delegate)设置为您的 View Controller 内的 self 。添加为它们返回 true 的 shouldRecognizeSimultaneouslyWithGestureRecognizer 方法。确保您也为他们设置了最小和最大触摸次数。

关于iOS:实现单指平移和两指平移手势?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38760299/

10-13 03:00