Search code examples
iphoneipadiosuigesturerecognizergesture

UISwipeGestureRecognizer Swipe length


Any idea if there is a way to get the length of a swipe gesture or the touches so that i can calculate the distance?


Solution

  • It's impossible to get a distance from a swipe gesture, because the SwipeGesture triggers the method where you could access the location exactly one time, when the gesture has ended.
    Maybe you want to use a UIPanGestureRecognizer.

    If it possible for you to use pan gesture you would save the starting point of the pan, and if the pan has ended calculate the distance.

    - (void)panGesture:(UIPanGestureRecognizer *)sender {
        if (sender.state == UIGestureRecognizerStateBegan) {
            startLocation = [sender locationInView:self.view];
        }
        else if (sender.state == UIGestureRecognizerStateEnded) {
            CGPoint stopLocation = [sender locationInView:self.view];
            CGFloat dx = stopLocation.x - startLocation.x;
            CGFloat dy = stopLocation.y - startLocation.y;
            CGFloat distance = sqrt(dx*dx + dy*dy );
            NSLog(@"Distance: %f", distance);
        }
    }