Tengo un pequeño problema con UIPanGestureRecognizer. el reconocedor no informa el estado UIGestureRecognizerStateEnded si el usuario enfocó a la parte superior izquierda (significa x negativos e y direcciones)UIPanGestureRecognizer no cambia al estado "Fin" o "Cancelar" si el usuario hizo una panorámica x e y en dirección negativa
el estado cambia a UIGestureRecognizerStateEnded si cualquier dirección es positivo cuando el usuario levanta el dedo, pero simplemente deja de informar acciones si ambas direcciones son negativas o cero.
Esto es malo porque oculto algunas vistas de superposición, siempre y cuando el usuario arrastra algo y esas vistas no vuelven en caso de error.
Por supuesto que podría configurar un NSTimer para mostrar la superposición después de un tiempo automáticamente otra vez, pero no puedo ver ningún error obvio en mi código y Lo quiero limpio.
¿Hay algo que eché de menos? ¿Es un error de Apple?
inicialización es así:
pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)];
[self addGestureRecognizer:pan];
[pan release];
La función de tratamiento es el siguiente:
- (void)panRecognized:(UIPanGestureRecognizer *)gestureRecognizer {
switch ([gestureRecognizer state]) {
case UIGestureRecognizerStateBegan:
// fade some overlaying views out
break;
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
// fade in the overlays
break;
default:
break;
}
// handle panning
}
Esto me ha pasado en el pasado cuando accidentalmente quité/moví el reconocedor de gestos a una vista diferente. Simplemente se silenciará tan pronto como lo haga. Este no es el caso en tu caso? – Kalle
No estoy seguro exactamente de lo que está pasando, pero intente registrar el cambio de estado contabilizando todos los UIGestureRecognizerStates posibles para ver qué ocurre durante la interacción –
Me ha sucedido a mí también. Moviendo 'uiview.addGestureRecognizer' de mi' viewDidLayoutSubviews' de mi VC a 'viewWillAppear' resuelto eso, aún buscando una justificación. – Jokester