Pregunta

Estoy intentando que el controlador de mi vista detecte swipes en la barra de UINavigation que se muestra automáticamente en mi aplicación, pero se niega a detectar swipes. ¿Hay alguna manera de que pueda hacerlo?

¿Fue útil?

Solución

Suponiendo que desea detectar desplazamientos hacia la izquierda en su barra de navegación, podría hacer algo como esto cuando cree el controlador de navegación :

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

y luego crea un método como el de abajo para manejarlo:

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

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

  //do something    
}

OBS: como su controlador de navegación es una clase que permanecerá activa durante varios pasos del ciclo de vida de su aplicación, es importante prestar atención a eso y agregar el reconocedor de gestos solo cuando cree el controlador de navegación (lo que significa que solo se agrega una vez) para que no sigas acumulando gestos de reconocimiento uno sobre otro, lo que no solo provocará una pérdida de memoria, sino que también hará que tu método didSwipedLeft sea llamado más de una vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top