Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-当移动到另一个场景时,如何从场景中删除滑动手势?_Ios_Swift_Sprite Kit_Uigesturerecognizer - Fatal编程技术网

Ios Swift-当移动到另一个场景时,如何从场景中删除滑动手势?

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

因此,我的游戏使用滑动手势,在didMoveToView()函数中,我初始化了这些手势:

            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但您确定已将该手势添加到视图中吗?将手势添加到视图时,该手势将自动添加到视图的
手势识别器
属性(数组)中。即使删除了所有手势,
手势识别器
也会引用一个空数组(不是零)。