iOS: 实现单指平移和两指平移手势?
iOS: implement one-finger pan and two-finger pan gestures?
目标是针对同一个 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!!!")
}
这样的代码
class MyClass : UIGestureRecognizerDelegate --< Delegate
func gestureRecognizer(_: UIGestureRecognizer,
shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool
{
return true
}
您需要将 UIGestureRecognizerDelegate
添加到您的视图控制器,并在您的视图控制器中将手势识别器委托给自己。添加为它们返回 true 的 shouldRecognizeSimultaneouslyWithGestureRecognizer 方法。确保您也为它们设置了最小和最大触摸次数。
目标是针对同一个 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!!!")
}
这样的代码
class MyClass : UIGestureRecognizerDelegate --< Delegate
func gestureRecognizer(_: UIGestureRecognizer,
shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool
{
return true
}
您需要将 UIGestureRecognizerDelegate
添加到您的视图控制器,并在您的视图控制器中将手势识别器委托给自己。添加为它们返回 true 的 shouldRecognizeSimultaneouslyWithGestureRecognizer 方法。确保您也为它们设置了最小和最大触摸次数。