8.6. Detecting Pinch Gestures

Problem

You want your users to be able to perform a pinch gesture on a view.

Solution

Create an instance of the UIPinchGestureRecognizer class and add it to your target view, using the addGestureRecognizer: instance method of the UIView class:

- (void)viewDidLoad {
  [super viewDidLoad];
  
  self.view.backgroundColor = [UIColor whiteColor];
  
  CGRect labelRect = CGRectMake(0.0f,     /* X */
                                0.0f,     /* Y */
                                200.0f,   /* Width */
                                200.0f);  /* Height */  
  
  self.myBlackLabel = [[UILabel alloc] initWithFrame:labelRect];
  self.myBlackLabel.center = self.view.center;
  self.myBlackLabel.backgroundColor = [UIColor blackColor];
  
  /* Without this line, the pinch gesture recognizer will not work */
  self.myBlackLabel.userInteractionEnabled = YES;
  [self.view addSubview:self.myBlackLabel];
  
  /* Create the Pinch Gesture Recognizer */
  self.pinchGestureRecognizer =  [[UIPinchGestureRecognizer alloc] 
                                  initWithTarget:self
                                  action:@selector(handlePinches:)];
  
  /* Add this gesture recognizer to the view */
  [self.myBlackLabel 
   addGestureRecognizer:self.pinchGestureRecognizer];
  
}

The .h file of the view controller is defined in this way:

#import <UIKit/UIKit.h>

@interface Detecting_Pinch_GesturesViewController : UIViewController

@property (nonatomic, strong) 
  UIPinchGestureRecognizer *pinchGestureRecognizer;

@property (nonatomic, strong) UILabel *myBlackLabel;

@property (nonatomic, unsafe_unretained) CGFloat currentScale;

@end

Discussion

Pinching allows users to scale GUI elements up and down easily. For instance, ...

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.