iOS добавляет жест вращения вместе с Pinch/Zoom

Я настраиваю свои распознаватели следующим образом. Обратите внимание: хотя я добавляю распознаватели в self.view, на самом деле трансформируется self.container (который является подвидом).

UIPinchGestureRecognizer *twoFingerPinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPinch:)];
twoFingerPinch.delegate = self;
[self.view addGestureRecognizer:twoFingerPinch];

UIRotationGestureRecognizer *rotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotate:)];
rotate.delegate = self;
[self.view addGestureRecognizer:rotate];

Щепотка/масштабирование отлично работает само по себе:

- (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer 
{

CGFloat scale = _lastScale * recognizer.scale;

CGAffineTransform tr = CGAffineTransformScale(self.view.transform, scale, scale);
self.container.transform = tr;

if (recognizer.state == UIGestureRecognizerStateEnded)  {
    _lastScale = scale;
    return;
}
}

Однако мне трудно добавить вращение:

- (IBAction)handleRotate:(UIRotationGestureRecognizer *)recognizer {
//recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
//recognizer.rotation = 0;

CGFloat rotation = _lastRotation * recognizer.rotation;

self.container.transform = CGAffineTransformRotate(self.view.transform, recognizer.rotation);
recognizer.rotation = 0;

if (recognizer.state == UIGestureRecognizerStateEnded)  {
    _lastRotation = rotation;
    return;
}
}

Когда я добавляю распознаватель вращения, вращение работает, но щипок/масштабирование нарушается (случайно прыгает от очень маленького к большому). Как я могу решить это, чтобы они оба работали?


person soleil    schedule 16.08.2012    source источник
comment
посмотрите, отвечает ли этот существующий вопрос SO на вашу проблему: stackoverflow.com/questions/8108768/   -  person john.k.doe    schedule 16.08.2012
comment
К сожалению, этот код трудно понять, не зная, что такое referenceTransform.   -  person soleil    schedule 17.08.2012