vertical sinonimo significado rae paneo movimientos fotografia cine camara ios7 uipangesturerecognizer

ios7 - significado - paneo sinonimo



La conversión de gestos de paneo se restablece entre should-begin y handler(con el estado iniciado) en iOS7 (2)

Tengo un reconocedor de gestos de paneo para arrastrar un panel hacia arriba, hacia abajo, hacia la izquierda o hacia la derecha. Cuando la dirección de la bandeja no es posible, no permito que el reconocedor comience para que los toques puedan ir a otros elementos de la interfaz de usuario dentro del panel.

Sin embargo, en iOS7, la traducción a veces se restablece entre el gestor de handlePan: gestos de handlePan: y mi controlador de gestos de handlePan:

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer*)panGR { CGPoint trans = [panGR translationInView:self.view]; NSLog(@"should begin trans: (%.2f, %.2f)", trans.x, trans.y); ...

Este registro: should begin trans: (18.00, 0.00)

- (void)handlePan:(UIPanGestureRecognizer*)panGR { CGPoint trans = [panGR translationInView:self.view]; switch(panGR.state) { case UIGestureRecognizerStateBegan: NSLog(@"handlePan began trans: (%.2f, %.2f)", trans.x, trans.y); ...

Estos registros: handlePan began trans: (0.00, 0.00)

Lo que significa que el código compartido para determinar la dirección de la bandeja (a la derecha, en este caso) funciona en gestos handlePan: y permite que el gesto comience, pero luego no puede determinarse en handlePan: cuando el state es UIGestureRecognizerStateBegan .

¿Se trata de un error en iOS7 o el comportamiento ha cambiado deliberadamente para adaptarse a los nuevos tipos de gestos? Además, ¿alguien puede sugerir una buena forma de solucionar este problema?


Puede determinar la dirección en handlePan: comprobando si la traducción horizontal es superior o inferior a 0. Pero al final de handlePan: necesita restablecer el CGPoint de la traducción como la nueva referencia para la próxima traducción.

- (void)handlePan:(UIPanGestureRecognizer*)panGR { CGPoint translation = [gr translationInView:self.view]; if (translation.x > 0) { //Direction: Right } else if (translation.x < 0) { //Direction: Left } [gr setTranslation:CGPointZero inView:self.view]; }


UIPanGestureRecognizer siempre está configurando la traducción a (0,0) después de alcanzar el estado UIGestureRecognizerStateBegan , ya que incluso la más mínima traducción se reconoce, está diseñada para funcionar solo como un disparador (si configura un umbral grande para comenzar el reconocimiento como (50,50 ) obviamente obtendrás un "retraso" en el comportamiento de la interfaz de usuario; como una solución sugeriría almacenar el valor de la traducción y luego utilizar una animación UIView para desplazar el objeto de forma más fluida). Debe usar UIGestureRecognizerStateChanged para actualizar la traducción, y UIGestureRecognizerStateRecognized para establecer el punto final de la bandeja.