Domanda

Sto cercando di far sì che il mio controller di visualizzazione rilevi gli swipe in UINavigationBar che viene automaticamente visualizzato dalla mia app, ma si rifiuta di rilevare gli swip. C'è un modo in cui posso farlo?

È stato utile?

Soluzione

Supponendo che tu voglia rilevare i passaggi a sinistra nella barra di navigazione, potresti fare qualcosa del genere quando crei il controller di navigazione :

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

e quindi crea un metodo come quello qui sotto per gestirlo:

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

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

  //do something    
}

OBS: poiché il controller di navigazione è una classe che rimarrà in vita per diversi passaggi del ciclo di vita dell'applicazione, è importante prestare attenzione a ciò e aggiungere il riconoscimento dei gesti solo quando si crea il controller di navigazione (il che significa solo aggiungere una volta) in modo da non mantenere l'accumulo dei riconoscimenti dei gesti l'uno sopra l'altro, il che non solo causerà una perdita di memoria, ma potrebbe anche far chiamare il tuo metodo didSwipedLeft più di una volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top