同时识别多个,需遵循协议,设定委托
#import <UIKit/UIKit.h>
@interface MainViewController : UIViewController <UIGestureRecognizerDelegate>
@end
//
// MainViewController.m
// PanGestureRecognizer
//
// Created by hejin on 13-9-16.
// Copyright (c) 2013年 iBokanWisdom. All rights reserved.
//
#import "MainViewController.h"
@interface MainViewController ()
@property (retain, nonatomic)UIImageView *imageView;
@property CGFloat lastRotation;
@end
@implementation MainViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
//创建图片视图对象
UIImage *image = [UIImage imageNamed:@"png-0022"];
self.imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 150, 150)];
self.imageView.center = self.view.center;
self.imageView.image = image;
[self.view addSubview:self.imageView];
//让图片视图可以与用户交互
self.imageView.userInteractionEnabled = YES;
//给图片视图对象添加捏合手势
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchHandle:)];
[self.imageView addGestureRecognizer:pinch];
//给图片视图对象添加旋转手势
UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotateHandle:)];
[self.imageView addGestureRecognizer:rotation];
//给捏合、旋转手势指定委托,让一个视图同时响应多个手势----------------------------
pinch.delegate = self;
rotation.delegate = self;
}
//捏合手势调用的方法
- (void)pinchHandle:(UIPinchGestureRecognizer *)sender {
//捏合时保持图片位置不变
CGPoint location = [sender locationInView:self.view];
sender.view.center = CGPointMake(location.x, location.y);
//通过手势的缩放比例改变图片的仿射变换矩阵
sender.view.transform = CGAffineTransformScale(sender.view.transform, sender.scale, sender.scale);
//重置手势缩放比例
sender.scale = 1;
}
//旋转手势调用的方法
- (void)rotateHandle:(UIRotationGestureRecognizer *)sender {
//改变手势view的仿射变换矩阵
sender.view.transform = CGAffineTransformRotate(sender.view.transform, sender.rotation);
//重置弧度
sender.rotation = 0;
}
//一个视图同时响应多个手势需要实现的方法,只需实现以下方法,并返回YES----------------------
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
@end