El gesto de la cacerola arruina la dirección en base a la rotation

Tengo un pequeño problema con mis reconocedores de gestos.

Tengo una class llamada "Sprite" que es solo un UIImageView. Sprite tiene sus propios reconocedores de gestos y methods de manejo para que un usuario pueda mover, rotar y cambiar el tamaño del gráfico.

Aquí está mi código:

-(void)setup{ //sets up the imageview... //add the image, frame, etc. UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)]; UIRotationGestureRecognizer *rotateGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotate:)]; [self addGestureRecognizer:panGesture]; [self addGestureRecognizer:pinchGesture]; [self addGestureRecognizer:rotateGesture]; } //handling methods -(void)handlePinch:(UIPinchGestureRecognizer *)recognizer{ recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); recognizer.scale = 1; } -(void)handleRotate:(UIRotationGestureRecognizer *)recognizer{ recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation); recognizer.rotation = 0; } -(void)handlePan:(UIPanGestureRecognizer *)recognizer{ CGPoint translation = [recognizer translationInView:self]; recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y); [recognizer setTranslation:CGPointMake(0, 0) inView:self] } 

Entonces, básicamente, cada uno de ellos funciona bien por su count. Sin embargo, cuando giro o cambio el tamaño de imageView, el paneo se vuelve problemático. Por ejemplo, si gira la image de manera invertida, los gestos de desplazamiento desplazarán la image en sentido inverso (arriba está hacia abajo, arrastrando hacia la izquierda lo mueve hacia la derecha, etc.). De manera similar, un sprite networkingimensionado no se moverá a la misma velocidad / distancia que antes.

¿Alguna idea sobre cómo puedo solucionar esto? Preferiría mantener este código dentro de la class Sprite en lugar del ViewController (si es posible). Gracias.

En lugar de translationInView: self, intente translationInView: self.superview.