What is the difference between Pan and Swipe in iOS?

gesture-recognition, gestures, ios

Solution

By definition, a swipe gesture is necessarily also a pan gesture -- both involve translational movement of touch points. The difference is in the recognizer semantics: a pan recognizer looks for the beginning of translational movement and continues to report movement in any direction over time, while a swipe recognizer makes an instantaneous decision as to whether the user's touches moved linearly in the required direction.

By default, no two recognizers will recognize the same gesture, so there's a conflict between pan and swipe. Most likely, your pan recognizer "wins" the conflict because its gesture is simpler / more general: A swipe is a pan but a pan may not be a swipe, so the pan recognizes first and excludes other recognizers.

You should be able to resolve this conflict using the delegate method `gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:`, or perhaps without delegation by making the pan recognizer depend on the swipe recognizer with `requireGestureRecognizerToFail:`.

With the conflict resolved, you should be able to simulate a one-finger swipe by quickly dragging the mouse. (Though as the mouse is more precise than your finger, it's a bit more finicky than doing the real thing on a device.) Two-finger pan/swipe can be done by holding the Option & Shift keys.

Problem

Sounds simple .. Hold the Trackpad, move the finger, release .. But somehow swipe is not being triggered (pan is triggered instead) ``` UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:v action:@selector(handleSwipe:)]; swipeGesture.direction= UISwipeGestureRecognizerDirectionUp; [v addGestureRecognizer:swipeGesture]; ``` Pan is recognized by the above sequence instead. ``` UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:v action:@selector(handlePan:)]; [v addGestureRecognizer: panGesture]; ``` If pan is commented, swipe is recognized by the same gesture .. With this, 2 questions: - What is the difference then between a pan and a swipe? - How can one simulate a swipe on iPhone simulator?

Original source