为什么不调用UIPinchGestureRecognizer,而scrollViewDidEndZooming是?

时间:2011-07-19 12:50:14

标签: objective-c ios gesture

我有一个UIViewController,它使用UIScrollView,在Scrollview中它有一个UIImageView。

我想识别相应的捏合和缩放。我不需要缩放,我只需要显示不同的图像。

看起来很像这个问题:UIView UIPinchGestureRecognizer problem

我尝试了几件事:

  • 将contentMode设置为UIViewContentModeScaleAspectFit

  • 设置multipleTouchEnabled = YES

  • 设置userInteractionEnabled = YES

然而,它仍然不总能抓住捏合事件。

以下是我如何将手势分配给视图,非常简单:

   UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(zoomPinch:)];
    [MediaScroller addGestureRecognizer:pinchRecognizer];
    [pinchRecognizer release];

另外,我注意到scrollViewDidEndZooming被调用了我的委托,但是scale变量总是1.0。怎么会这样?

始终调用scrollViewDidEndZooming,而不总是调用捏合方法(zoomPinch)。出现这种情况的原因是什么?我该如何解决? :)

1 个答案:

答案 0 :(得分:6)

我认为您需要在recognizer delegate

中实现这一点
pinchRecognizer.delegate = self;

然后,自我上课:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
     return YES;
}

由于该类已经识别出pinch(用于缩放),因此您可能需要启用多个处理程序来进行缩放。