iOS添加旋转手势以及捏合/缩放

时间:2012-08-16 19:03:54

标签: ios uigesturerecognizer gesture-recognition uipinchgesturerecognizer

我正在设置这样的识别器。请注意,虽然我在self.view中添加了识别器,但它实际上是自我转换器(它是一个子视图)。

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;
}
}

当我添加旋转识别器时,旋转起作用但是捏合/缩放被打破(随意地从小到大跳跃)。我怎样才能解决这个问题,以便它们都有效?

0 个答案:

没有答案
相关问题