Swift - 如何在移动到另一个场景时从场景中删除滑动手势?
Swift - How to remove swipe gesture from scene when moving to another one?
所以我的游戏使用滑动手势,在我的 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)
}
}
仍然不太确定如何实现这个 and/or 在切换到游戏结束之前从场景中删除手势。有人可以帮忙吗?
你正在删除所有类型的手势,试试这个:
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
,请将 UIGestureRecognizer
替换为 UISwipeGestureRecognizer
。
extension SKView {
func removeAllGestureRecognizers() {
if let objects = gestureRecognizers {
for object in objects {
if let gestureRecognizer = object as? UIGestureRecognizer {
removeGestureRecognizer(gestureRecognizer)
}
}
}
}
}
所以我的游戏使用滑动手势,在我的 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)
}
}
仍然不太确定如何实现这个 and/or 在切换到游戏结束之前从场景中删除手势。有人可以帮忙吗?
你正在删除所有类型的手势,试试这个:
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
,请将 UIGestureRecognizer
替换为 UISwipeGestureRecognizer
。
extension SKView {
func removeAllGestureRecognizers() {
if let objects = gestureRecognizers {
for object in objects {
if let gestureRecognizer = object as? UIGestureRecognizer {
removeGestureRecognizer(gestureRecognizer)
}
}
}
}
}