代码之家  ›  专栏  ›  技术社区  ›  Joe

如何将手势从UIPinchGestureRecognizer处理程序转换为UIPanGestureIdentifizer处理程序?

  •  1
  • Joe  · 技术社区  · 13 年前

    我有一个UIPinchGestureRecognizer的处理程序方法,用于缩放视图。我想做的是,当屏幕上有两个捏手势的触摸时,如果一根手指被抬起,剩下的手指将由平移手势识别器管理。有办法做到这一点吗?我想不出一种正确的方式将一个手势从一个处理者传递到另一个处理器。

    1 回复  |  直到 13 年前
        1
  •  0
  •   Javier Quevedo    13 年前

    这应该很容易。创建两个手势识别器。UIPinchGestureRecognizer和UIPanGestureIdentifizer。别忘了成为两者的代表!

        pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scaleHandler:)];
        [pinchRecognizer setDelegate:self];
        [pinchRecognizer setDelaysTouchesBegan:NO];
        [pinchRecognizer setDelaysTouchesEnded:NO];
        [pinchRecognizer setCancelsTouchesInView:NO];
        panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panHandler:)];
        [panRecognizer setMaximumNumberOfTouches:2];
        [panRecognizer setMinimumNumberOfTouches:1];
        [panRecognizer setDelegate:self];
        [panRecognizer setDelaysTouchesBegan:NO];
        [panRecognizer setDelaysTouchesEnded:NO];
        [panRecognizer setCancelsTouchesInView:NO];
    

    现在实现手势代理的以下方法。

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

    }

    这将使两个处理程序都被触发,这样当你释放其中一个手指时,它会平移,但当你同时拥有两个手指时它会夹住。