我有一个滚动视图,显示图像视图。我试图在图像视图上处理UIRotationGestureRecognizer。我得到了旋转事件并在同一个上应用了所需的变换。图像在滚动视图中正确旋转。然后,当我在滚动视图中执行任何操作(如缩放或平移)时,图像旋转和位置会进行折腾
_mainView是UIScrollView的子视图,也用于缩放
UIRotationGestureRecognizer *rotationGesture=[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGesture:)];
[_mainView addGestureRecognizer:rotationGesture];
[rotationGesture release];
-(void) rotationGesture:(UIRotationGestureRecognizer *) sender {
if(sender.state == UIGestureRecognizerStateBegan ||
sender.state == UIGestureRecognizerStateChanged)
{
sender.view.transform = CGAffineTransformRotate(sender.view.transform,
sender.rotation);
_currRotation = _currRotation + sender.rotation;
[sender setRotation:0];
}
}
我想了解在滚动视图中处理旋转的正确方法是什么,即使在滚动视图中的缩放事件之后它仍保持旋转。
答案 0 :(得分:0)
在UIGestureRecognizerDelegate中实施gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:方法,并返回您想要同时识别的所有手势 。如果您仍然遇到问题,请查看UIImageView Gestures (Zoom, Rotate) Question的答案。
祝你好运! 编辑:您的评论让我猜测问题是您一次只能进行一次变换,滚动视图应用缩放变换,替换旋转变换。您可以删除本机缩放识别器(请参阅this question),或在滚动视图中嵌套另一个UIView,然后对其应用旋转变换。我喜欢选项二,看起来更容易。如果选择选项1,请使用CGAffineTransformConcat独立应用缩放和旋转变换。