The concrete subclasses of UIGestureRecognizer are the following:
UITapGestureRecognizer
UIPinchGestureRecognizer
UIRotationGestureRecognizer
UISwipeGestureRecognizer
UIPanGestureRecognizer
UILongPressGestureRecognizer
系统定制好的动作识别是以上的六种,当然可以自己定制。
下面的小程序,是添加了UIPanGestureRecognizer、UIPinchGestureRecognizer、UIRotationGestureRecognizer这三个动作以及相应的handle函数。
其他的几个可以去苹果的文档中查相应的属性以及用法,至于如何定制自己的手势,建议看下面这篇文章
http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more
//
// ViewController.m
// iphoneGestureRecognizer
//
// Created by mac11 on 12-3-30.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
#import "ViewController.h"
@implementation ViewController
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
UIPinchGestureRecognizer *pinGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];
[self.view addGestureRecognizer:pinGestureRecognizer];
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
panGestureRecognizer.maximumNumberOfTouches = 2;
panGestureRecognizer.minimumNumberOfTouches = 1;
[self.view addGestureRecognizer:panGestureRecognizer];
UIRotationGestureRecognizer * rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotation:)];
[self.view addGestureRecognizer:rotationGestureRecognizer];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
#pragma mark - handleGestureRecognizer
-(IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer
{
if(recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged)
{
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform,recognizer.scale, recognizer.scale);
recognizer.scale = 1;
}
}
-(IBAction)handlePan:(UIPanGestureRecognizer *)recognizer
{
if(recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged)
{
CGPoint translation = [recognizer translationInView:self.view];
[recognizer.view setCenter:CGPointMake(recognizer.view.center.x + translation.x*0.5,
recognizer.view.center.y + translation.y*0.3)];
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
}
-(IBAction)handleRotation:(UIRotationGestureRecognizer *)recognizer
{
if(recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged)
{
recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform,recognizer.rotation);
recognizer.rotation = 0;
}
}
@end