UIGestureRecognizer手势识别
UIGestureRecognizer 继承于 NSObject 共有七种手势
即:
1.UIPinchGestureRecognizer (捏合手势)2.UITapGestureRecognizer (轻拍手势)
3.UIRotationGestureRecognizer (旋转手势)
4.UISwipeGestureRecognizer (轻扫手势)
5.UIPanGestureRecognizer (拖拽手势)
6.UIScreenEdgePanGestureRecognizer (屏幕边缘轻扫手势)
7.UILongPressGestureRecognizer (长按手势)
实现手势步骤
1创建手势对象
UIGestureRecognizer 的 七个子类并没有自身的初始化方法, 所以需要使用父类的 初始化方法,如下
- (instancetype)initWithTarget:(id)target action:(SEL)action
2将手势加在视图上, 注意视图的用户交互属性是否开启
- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer/* 创建对象 */
@property(nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled/* 用户交互属性*/
3内存管理
- (void)release
4设置相关属性
5手势方法实现
实现创建对象 - (instancetype)initWithTarget:(id)target action:(SEL)action
中的 action:(SEL)action
例如
1.UIPinchGestureRecognizer (捏合手势)
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 创建一个UIImageView对象 */
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];
imageView.frame = CGRectMake(0, 0, 300, 300);
imageView.center = self.view.center;
imageView.layer.cornerRadius = 50;
imageView.layer.backgroundColor = [UIColor blackColor].CGColor;
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];
[imageView release];
/* 创建UIPinchGestureRecognizer对象*/
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];
/* 将手势加在视图上, 注意视图的用户交互属性是否开启 */
[imageView addGestureRecognizer:pinch];
imageView.userInteractionEnabled = YES;/* 默认NO */
[pinch release];
}
/* 实现action:@selector(pinchAction:)*/
- (void)pinchAction:(UIPinchGestureRecognizer *)pinch
{
NSLog(@"捏合");
/* 设置imageView的transform属性
*使用CGAffineTransformScale函数改变比例实现缩放效果
*/
pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale);
pinch.scale = 1;
}
2.UITapGestureRecognizer (轻拍手势)
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 创建一个UIImageView对象 */
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];
imageView.frame = CGRectMake(0, 0, 300, 300);
imageView.center = self.view.center;
imageView.layer.cornerRadius = 50;
imageView.layer.backgroundColor = [UIColor blackColor].CGColor;
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];
[imageView release];
/* 创建UITapGestureRecognizer手势对象 */
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
/* 设置相关属性 */
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
/* 将手势加在视图上, 注意视图的用户交互属性是否开启 */
[imageView addGestureRecognizer:tap];
imageView.userInteractionEnabled = YES;/* 默认NO */
[tap release];
}
/* 实现action:@selector(pinchAction:)*/
- (void)tapAction:(UITapGestureRecognizer *)tap
{
NSLog(@"轻拍");
}
3.UIRotationGestureRecognizer (旋转手势)
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 创建一个UIImageView对象 */
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];
imageView.frame = CGRectMake(0, 0, 300, 300);
imageView.center = self.view.center;
imageView.layer.cornerRadius = 50;
imageView.layer.backgroundColor = [UIColor blackColor].CGColor;
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];
[imageView release];
/* 创建UIRotationGestureRecognizer手势对象 */
UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationAction:)];
/* 将手势加在视图上, 注意视图的用户交互属性是否开启 */
[imageView addGestureRecognizer:rotation];
imageView.userInteractionEnabled = YES;/* 默认NO */
[rotation release];
}
/* 实现action:@selector(pinchAction:)*/
- (void)rotationAction:(UIRotationGestureRecognizer *)rotation
{
NSLog(@"旋转");
NSLog(@"%@", rotation);
/* 设置imageView的transform属性
* 使用 CGAffineTransformRotate 函数
*/
rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation);
rotation.rotation = 0;
}
4.UISwipeGestureRecognizer (轻扫手势)
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 创建UISwipeGestureRecognizer手势对象 */
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];
/* 设置相关属性 */
swipe.direction = UISwipeGestureRecognizerDirectionUp;
/* 将手势加在视图上, 注意视图的用户交互属性是否开启 */
[self.view addGestureRecognizer:swipe];
[swipe release];
}
/* 实现action:@selector(pinchAction:)*/
- (void)swipeAction:(UISwipeGestureRecognizer *)swipe
{
NSLog(@"轻扫");
}
5.UIPanGestureRecognizer (拖拽手势)
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 创建一个UIImageView对象 */
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];
imageView.frame = CGRectMake(0, 0, 300, 300);
imageView.center = self.view.center;
imageView.layer.cornerRadius = 50;
imageView.layer.backgroundColor = [UIColor blackColor].CGColor;
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];
[imageView release];
/* 创建UIPanGestureRecognizer手势对象 */
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
/* 将手势加在视图上, 注意视图的用户交互属性是否开启 */
[imageView addGestureRecognizer:pan];
imageView.userInteractionEnabled = YES;/* 默认NO */
[pan release];
}
/* 实现action:@selector(pinchAction:)*/
- (void)panAction:(UIPanGestureRecognizer *)pan
{
NSLog(@"拖拽");
/* 设置imageView的transform属性
* 使用 CGAffineTransformTranslate 函数
*/
CGPoint point = [pan translationInView:pan.view];
pan.view.transform = CGAffineTransformTranslate(pan.view.transform, point.x, point.y);
[pan setTranslation:CGPointZero inView:pan.view];
}
6.UIScreenEdgePanGestureRecognizer (屏幕边缘轻扫手势)
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 创建UIScreenEdgePanGestureRecognizer手势对象 */
UIScreenEdgePanGestureRecognizer *screenEdge = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(screenAction:)];
/* 设置相关属性 */
screenEdge.edges = 2;
/* 将手势加在视图上, 注意视图的用户交互属性是否开启 */
[self.view addGestureRecognizer:screenEdge];
[screenEdge release];
}
/* 实现action:@selector(pinchAction:)*/
-(void)screenAction:(UIScreenEdgePanGestureRecognizer *)screen
{
NSLog(@"屏幕边缘轻扫");
}
7.UILongPressGestureRecognizer (长按手势)
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 创建一个UIImageView对象 */
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];
imageView.frame = CGRectMake(0, 0, 300, 300);
imageView.center = self.view.center;
imageView.layer.cornerRadius = 50;
imageView.layer.backgroundColor = [UIColor blackColor].CGColor;
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];
[imageView release];
/* 创建UILongPressGestureRecognizer手势对象 */
UILongPressGestureRecognizer *long1 = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longAction:)];
/* 将手势加在视图上, 注意视图的用户交互属性是否开启 */
[imageView addGestureRecognizer:long1];
imageView.userInteractionEnabled = YES;/* 默认NO */
[long1 release];
}
/* 实现action:@selector(pinchAction:)*/
- (void)longAction:(UILongPressGestureRecognizer *)long1
{
NSLog(@"长按");
}