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

标签 ios swift sprite-kit uigesturerecognizer

所以我的游戏使用滑动手势,在我的 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)
   }
}

仍然不太确定如何在切换到游戏结束之前实现这一点和/或从场景中删除手势。谁能帮忙?

最佳答案

以下从 View 中删除所有滑动手势识别器:

override func willMoveFromView(view: SKView) {
    if let gestures = view.gestureRecognizers {
        for gesture in gestures {
           if let recognizer = gesture as? UISwipeGestureRecognizer {
                view.removeGestureRecognizer(recognizer)
           }
        }
    }
}

关于ios - Swift - 如何在移动到另一个场景时从场景中删除滑动手势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27883575/

相关文章:

ios - 如何删除UIWebview中的缓存?

ios - 在 NSArray 中循环并将对象添加到 NSMutableArray

ios - UIButton touchDragEnter 和 touchDragExit 调用太频繁

arrays - Swift 2 数组包含对象?

ios - 如何解决 CGPath 性能不佳的问题? [iOS 8/SpriteKit 中的 Curve Fever 克隆]

ios - 呈现一个透明的模态 UIViewController

ios - 禁用 iPhone X 约束

具有复杂类型的 Swift CustomStringConvertible

swift - 找不到“StartApp/StartApp.h”文件

Swift 3 太空射击游戏 : Issue with bullet collision