このように認識エンジンを設定しています。レコグナイザーを 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;
}
}
回転レコグナイザーを追加すると、回転は機能しますが、ピンチ/ズームが壊れます (非常に小さいものから大きいものへ無計画にジャンプします)。両方が機能するようにこれを解決するにはどうすればよいですか?