7.1. Detecting Swipe Gestures

Problem

You want to be able to detect when the user performs a swipe gesture on a view—for instance, swiping a picture out of the window.

Solution

Instantiate an object of type UISwipeGestureRecognizer and add it to an instance of UIView:

- (void)viewDidLoad {
  [super viewDidLoad];
  
  /* Instantiate the object */
  self.swipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] 
                                 initWithTarget:self 
                                 action:@selector(handleSwipes:)];
  
  /* Swipes that are performed from right to 
   left are to be detected */
  self.swipeGestureRecognizer.direction = 
    UISwipeGestureRecognizerDirectionLeft;
  
  /* Just one finger needed */
  self.swipeGestureRecognizer.numberOfTouchesRequired = 1;
  
  /* Add it to the view */
  [self.view addGestureRecognizer:self.swipeGestureRecognizer];
  
}

- (void) viewDidUnload{
  [super viewDidUnload]; 
  self.swipeGestureRecognizer = nil;
}

A gesture recognizer could be created as a standalone object, but here, because we are using it just for one view, we have created it as a property of the view controller that will receive the gesture (self.swipeGestureRecognizer). This recipe’s Discussion shows the handleSwipes: method used in this code as the target for the swipe gesture recognizer.

Discussion

The swipe gesture is one of the most straightforward motions that built-in iOS SDK gesture recognizers will register. It is a simple movement of one or more fingers on a view from one direction to another. The UISwipeGestureRecognizer, like other gesture recognizers, inherits from ...

Get iOS 5 Programming Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.