[英]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.