Estoy tratando de eliminar tres reconocedores de gestos adjuntos a una uiscrollview.cómo eliminar por completo los reconocedores de gestos
I Lista ellos utilizando
NSArray * activeScrollViewGRecs = [theScrollView gestureRecognizers];
NSLog (@"activeScrollViewGRecs count: %d",[activeScrollViewGRecs count]);
consigo los tres enumerados.
Entonces les quite con:
for (UIGestureRecognizer *recognizer in activeScrollViewGRecs)
{
NSLog (@"recognizer: %@",recognizer.description);
recognizer.enabled = NO;
[theScrollView removeGestureRecognizer:recognizer];
}
Entonces les lista de nuevo, y obtener un recuento de cero. Deben desaparecer/eliminarse, ¿no? ¿Por qué la vista continuaría respondiendo (y los métodos de gestos se llamarán) a los mismos toques/toques. ¿Hay algún tipo de mecanismo de "enrojecimiento" que deba suceder antes de que se vayan para siempre?
esta es la forma en que se crean:
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];
gracias
¿Ha establecido un punto de interrupción en esos métodos de gesto para verificar si realmente se están disparando aunque haya eliminado el gesto? – Jeremy
bien, los métodos que responden a ellos todavía reciben llamadas. es decir, (void) handleTouchesOne: (UITapGestureRecognizer *) reconocedor) ... así que las cosas todavía están sucediendo en la pantalla. – TrekOnTV2017
Interesante. He visto esto suceder en casos donde un gesto se filtró de alguna manera. – Jeremy