Question

J'essaie de faire en sorte que mon contrôleur de vue détecte les balayages dans la barre UINavigation qui est automatiquement affichée par mon application, mais il refuse de les détecter. Y a-t-il un moyen de le faire?

Était-ce utile?

La solution

Si vous souhaitez détecter les glissements vers la gauche de votre barre de navigation, vous pouvez utiliser une méthode semblable à celle-ci lorsque vous créez le contrôleur de navigation :

   UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewSwipedLeft:)];
   [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
   [self.navigationController.navigationBar addGestureRecognizer:swipeLeft];

puis créez une méthode comme celle ci-dessous pour la gérer:

-(void) didSwipedLeft: (UISwipeGestureRecognizer *) gesture {

  if (gesture.state != UIGestureRecognizerStateEnded) {
      return;
  }

  //do something    
}

OBS: Étant donné que votre contrôleur de navigation est une classe qui restera active pendant plusieurs étapes du cycle de vie de votre application, il est important de faire attention à cela et d’ajouter le programme de reconnaissance des gestes uniquement lorsque vous créez le contrôleur de navigation (c’est-à-dire une fois) afin que vous ne gardiez pas les gestes de pile de reconnaissance les uns sur les autres, ce qui entraînerait non seulement une fuite de mémoire, mais pourrait également faire que votre méthode didSwipedLeft soit appelée plusieurs fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top