O'Reilly logo

iOS 7 Programming Cookbook by Vandad Nahavandipoor

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

10.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:

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong)
    UITapGestureRecognizer *tapGestureRecognizer;
@end

@implementation ViewController

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

- (void)viewDidLoad {
    [super viewDidLoad];
    
    /* 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 our 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 used to detect the location of the tap event. If the tap gesture requires ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required