在UIPinchGestureRecognizer上调用一次动作

Sle*_*lee 1 objective-c ipad ios

是否可以只触发一次UIPinchGestureRecognizer操作?

我想让我的用户捏(实际传播)到一个动作的激发,但该方法被不断调用,我理解是UIPinchGestureRecognizer的功能.

使用下面的答案更新代码(只检测缩放):

-(void) handlePinchGesture: (UIPinchGestureRecognizer *) sender {
    if (sender.state == UIGestureRecognizerStateBegan) {
        self.startingScale = sender.scale;
    }
    if (sender.state == UIGestureRecognizerStateEnded) {
        if (sender.scale > self.startingScale) {
            [self zoomIn];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*lum 6

手势识别器是状态机,如果您没有指定要监听的状态,只需从手势中调用选择器就会触发任何/每个状态.

要将检测限制为手势开始时您可以使用:

- (void)myGestureRecognized:(UIGestureRecognizer*)sender
{
    if (sender.state == UIGestureRecognizerStateBegan) {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

其他承认状态包括:

typedef enum {
   UIGestureRecognizerStatePossible,

   UIGestureRecognizerStateBegan,
   UIGestureRecognizerStateChanged,
   UIGestureRecognizerStateEnded,
   UIGestureRecognizerStateCancelled,

   UIGestureRecognizerStateFailed,

   UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded
} UIGestureRecognizerState;
Run Code Online (Sandbox Code Playgroud)