Search code examples
iphoneobjective-ciosswipe-gesture

how to handle 1 to 3 fingers swipe gesture in iOS


I use the following code to handle 1 finger swipe in my code:

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
    [swipe setDirection:UISwipeGestureRecognizerDirectionLeft];
    [swipe setDelaysTouchesBegan:YES];
    [[self view] addGestureRecognizer:swipe];

I know i can add the following line to make it handle 2 fingers swipe:

 [swipe setNumberOfTouchesRequired:2];

However when I add the above code 1 finger swipe is no longer detected since the number of touches required is now 2. What can I do to make my code work for 1, 2 or 3 fingers swipe?

I tried using the following code but this doesn't do what I want to do.

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
    [panRecognizer setMinimumNumberOfTouches:1];
    [panRecognizer setMaximumNumberOfTouches:3];
    [panRecognizer setDelaysTouchesBegan:YES];
    [[self view] addGestureRecognizer:panRecognizer];
    [panRecognizer release];

Thank you.


Solution

  • In your handleViewsSwipe you can get the numberOfTouches property from the gesture recognizer.

    - (void)handleViewsSwipe:(UISwipeGestureRecognizer *)recognizer {
        NSUInteger touches = recognizer.numberOfTouches;
        switch (touches) {
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            default:
                break;
        }
    }
    

    Just switch the same method for what to do depending on how many touches you get.