Sto tentando di rimuovere tre riconoscitori di gesti collegati a una panoramica di scansione.come rimuovere completamente i riconoscitori di gesti
Ne elenco utilizzando
NSArray * activeScrollViewGRecs = [theScrollView gestureRecognizers];
NSLog (@"activeScrollViewGRecs count: %d",[activeScrollViewGRecs count]);
ho la tre elencati.
Allora io li rimuovere con:
for (UIGestureRecognizer *recognizer in activeScrollViewGRecs)
{
NSLog (@"recognizer: %@",recognizer.description);
recognizer.enabled = NO;
[theScrollView removeGestureRecognizer:recognizer];
}
Allora io li elenco di nuovo, e ottenere un conteggio pari a zero. Dovrebbero essere spariti/rimossi, giusto? Perché la visualizzazione continuerà a rispondere (e ai metodi gestuali vengono chiamati) agli stessi tocchi/passaggi. Esiste una sorta di meccanismo di "lavaggio" che deve accadere prima che se ne vadano per sempre?
questo è il modo in cui vengono creati:
tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle1:)];
tapGesture.cancelsTouchesInView = NO; tapGesture.delaysTouchesEnded = NO;
tapGesture.numberOfTouchesRequired = 2; tapGesture.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:tapGesture]; [tapGesture release];
swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handle2:)];
swipeGesture.cancelsTouchesInView = NO; swipeGesture.delaysTouchesEnded = NO; swipeGesture.delegate = self;
swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeGesture]; [swipeGesture release];
grazie
Hai impostato un punto di interruzione su quei metodi gestuali per verificare se sono stati effettivamente attivati anche se hai rimosso il gesto? – Jeremy
beh, i metodi che rispondono a loro vengono ancora chiamati. es. - (void) handleTouchesOne: (UITapGestureRecognizer *) recognizer) ... così roba continua a succedere sullo schermo. – TrekOnTV2017
Interessante. Ho visto questo accadere nei casi in cui un gesto è trapelato in qualche modo. – Jeremy