2015-01-11 3 views
2

Так что моя игра использует жесты салфетки, в моей функции didMoveToView() У меня есть эти жесты инициализированы:Swift - Как удалить салфетки из сцены при переходе на другую?

  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) 
    } 
} 

До сих пор не совсем уверен, как это реализовать и/или удалить жесты со сцены перед переходом к игре снова. Может ли кто-нибудь помочь?

ответ

8

Следующие удаляют все салфетки жеста распознаватели с точки зрения:

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

Удивительно, большое вам спасибо! – riverhawk

+0

Его не работает для меня !!!. Каждый раз, когда view.gestureRecognizers дает нуль. –

+0

@PintuRajput вы уверены, что добавили жест SKView? Когда вы добавляете жест в представление, жест автоматически добавляется для просмотра свойства gestureRecognizers', массива. Даже если вы удалили все жесты, 'gestureRecognizers' будет ссылаться на пустой массив (не ноль). – 0x141E

0

Вы удаляете все виды жеста, попробуйте это:

if([recognizer isKindOfClass:[UISwipeGestureRecognizer class]]) { 
    [self removeGestureRecognizer:recognizer]; 
} 

Надеется, что это помогает .. :)

+1

Как насчет в Swift? – riverhawk

0

Замените UIGestureRecognizer на UISwipeGestureRecognizer, если это то, что вы хотите удалить.

extension SKView { 
    func removeAllGestureRecognizers() { 
     if let objects = gestureRecognizers { 
      for object in objects { 
       if let gestureRecognizer = object as? UIGestureRecognizer { 
        removeGestureRecognizer(gestureRecognizer) 
       } 
      } 
     } 
    } 
} 
Смежные вопросы