Ios Swift-当移动到另一个场景时,如何从场景中删除滑动手势?
因此,我的游戏使用滑动手势,在didMoveToView()函数中,我初始化了这些手势:Ios Swift-当移动到另一个场景时,如何从场景中删除滑动手势?,ios,swift,sprite-kit,uigesturerecognizer,Ios,Swift,Sprite Kit,Uigesturerecognizer,因此,我的游戏使用滑动手势,在didMoveToView()函数中,我初始化了这些手势: let swipeRight = UISwipeGestureRecognizer() swipeRight.direction = UISwipeGestureRecognizerDirection.Right self.view?.addGestureRecognizer(swipeRight) let s
let swipeRight = UISwipeGestureRecognizer()
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.view?.addGestureRecognizer(swipeRight)
let swipeLeft = UISwipeGestureRecognizer()
swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
self.view?.addGestureRecognizer(swipeLeft)
let swipeUp = UISwipeGestureRecognizer()
swipeUp.direction = UISwipeGestureRecognizerDirection.Up
self.view?.addGestureRecognizer(swipeUp)
let swipeDown = UISwipeGestureRecognizer()
swipeDown.direction = UISwipeGestureRecognizerDirection.Down
self.view?.addGestureRecognizer(swipeDown)
问题是当我移动到GameOver场景时,我刷卡,它会使我的应用程序崩溃。我注意到有人贴了类似的东西,并得到了这个答案
override func willMoveFromView(view: SKView) {
for recognizer in self.view.gestureRecognizers! {
self.view.removeGestureRecognizer(recognizer)
}
}
在切换到游戏结束之前,仍然不太确定如何实现这一点和/或从场景中删除手势。有人能帮忙吗?您正在删除各种手势,请尝试以下操作:
if([recognizer isKindOfClass:[UISwipeGestureRecognizer class]]) {
[self removeGestureRecognizer:recognizer];
}
希望这有帮助:) 以下操作将从视图中删除所有滑动手势识别器:
override func willMoveFromView(view: SKView) {
if let gestures = view.gestureRecognizers {
for gesture in gestures {
if let recognizer = gesture as? UISwipeGestureRecognizer {
view.removeGestureRecognizer(recognizer)
}
}
}
}
如果要删除
UIGestureRecognizer
,请将其替换为UIWipeGestureRecognizer
extension SKView {
func removeAllGestureRecognizers() {
if let objects = gestureRecognizers {
for object in objects {
if let gestureRecognizer = object as? UIGestureRecognizer {
removeGestureRecognizer(gestureRecognizer)
}
}
}
}
}
这对我没用!!!。每次view.gestureerecognizers都给出nil。@pinturaj但您确定已将该手势添加到视图中吗?将手势添加到视图时,该手势将自动添加到视图的
手势识别器
属性(数组)中。即使删除了所有手势,手势识别器
也会引用一个空数组(不是零)。