objective-c - 为什么不调用 UIPinchGestureRecognizer 而 scrollViewDidEndZooming 是?

标签 objective-c ios gesture

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

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

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

我尝试了几件事:

  • 将 contentMode 设置为 UIViewContentModeScaleAspectFit
  • 设置 multipleTouchEnabled = YES
  • 设置 userInteractionEnabled = YES

  • 然而,它仍然不能总是捕捉到捏合事件。

    这是我将手势分配给 View 的方式,非常简单:
       UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(zoomPinch:)];
        [MediaScroller addGestureRecognizer:pinchRecognizer];
        [pinchRecognizer release];
    

    另外,我确实注意到 scrollViewDidEndZooming被我的委托(delegate)调用,但比例变量始终为 1.0。怎么可能?
    scrollViewDidEndZooming总是被调用,而 pinch 方法 (zoomPinch) 并不总是被调用。为什么会发生这种情况?我该如何解决? :)

    最佳答案

    我相信你需要在你的 recognizer delegate 中实现这个。 :

    pinchRecognizer.delegate = self;
    

    然后,在自我课上:
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
         return YES;
    }
    

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

    关于objective-c - 为什么不调用 UIPinchGestureRecognizer 而 scrollViewDidEndZooming 是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6747427/

    相关文章:

    android - $ cordovaFile.writeFile()每当我尝试单击图片并在ionic中发送带有它的api请求时,总是在ionic IOS中引发错误?

    ios - 如何在应用程序中加载语言文件(ios swift)

    ios - Firebase 用户电话号码验证

    android - 如何处理 ImageView 上的向下滑动手势

    ios - UIImageView 开始动画不会对翻转图像进行动画处理

    ios - UIWebView 仅在添加到 View 时才起作用

    iphone - Round value iOS 中的浮点值

    objective-c - 如何在 Swift 中调用 Objective C 类方法

    ios - 如何在 iPhone X 中启用 Edge Protect?

    android - 将 GestureOverlayView 添加到我的 SurfaceView 类,如何添加到 View 层次结构?