繁体   English   中英

iOS:实现单指平移和双指平移手势?

[英]iOS: implement one-finger pan and two-finger pan gestures?

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

以下代码无效。 即使手势被分配了不同的选择器,也不会调用单指平移功能。 单指平底锅和双指平底锅均调用sceneViewPannedTwoFingers

从阅读其他问题来看,似乎shouldRecognizeSimultaneouslyWithGestureRecognizer可能是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添加到视图控制器,并将视图控制器中的手势识别器委托给self。 添加shouldRecognizeSimultaneouslyWithGestureRecognizer方法,为它们返回true。 确保为它们设置最小和最大触摸次数。

像这样的代码

class MyClass : UIGestureRecognizerDelegate --< Delegate
 func gestureRecognizer(_: UIGestureRecognizer,
                           shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool
    {
        return true

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM