8.5. Detecting Tap Gestures

Problem

You want to be able to detect when users tap on a view.

Solution

Create an instance of the UITapGestureRecognizer class and add it to the target view, using the addGestureRecognizer: instance method of the UIView class. Let’s have a look at the definition of the view controller (the .h file):

#import <UIKit/UIKit.h>

@interface Detecting_Tap_GesturesViewController : UIViewController

@property (nonatomic, strong) 
  UITapGestureRecognizer *tapGestureRecognizer;

@end

The implementation of the viewDidLoad instance method of the view controller is as follows:

- (void)viewDidLoad {
  [super viewDidLoad];
  
  self.view.backgroundColor = [UIColor whiteColor];
  
  /* Create the Tap Gesture Recognizer */
  self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] 
                               initWithTarget:self
                               action:@selector(handleTaps:)];
  
  /* The number of fingers that must be on the screen */
  self.tapGestureRecognizer.numberOfTouchesRequired = 2;
  
  /* The total number of taps to be performed before the 
   gesture is recognized */
  self.tapGestureRecognizer.numberOfTapsRequired = 3;
  
  /* Add this gesture recognizer to the view */
  [self.view addGestureRecognizer:self.tapGestureRecognizer];
  
}

Discussion

The tap gesture recognizer is the best candidate among gesture recognizers to detect plain tap gestures. A tap event is the event triggered by the user touching and lifting his finger(s) off the screen. A tap gesture is a discrete gesture.

The locationInView: method of the UITapGestureRecognizer class can be ...

Get iOS 6 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.