所以我的游戏使用滑动手势,在我的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)
问题是,当我移动到我的Game Over场景时,我刷卡,它崩溃了我的应用程序。我注意到有人发布了类似的东西并将其作为答案
override func willMoveFromView(view: SKView) {
for recognizer in self.view.gestureRecognizers! {
self.view.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)
}
}
}
}
你正在删除所有类型的手势,试试这个:
if([recognizer isKindOfClass:[UISwipeGestureRecognizer class]]) {
[self removeGestureRecognizer:recognizer];
}
希望这可以帮助.. :)
用UIGestureRecognizer
替换UISwipeGestureRecognizer
,如果这是你要删除的。
extension SKView {
func removeAllGestureRecognizers() {
if let objects = gestureRecognizers {
for object in objects {
if let gestureRecognizer = object as? UIGestureRecognizer {
removeGestureRecognizer(gestureRecognizer)
}
}
}
}
}