【学习总结】UIGestureRecognizer(手势识别器)
基本知识点 :
-> IOS 3.2之后 , 苹果推出了手势识别功能 ( Gesture Recognizer ) 在触摸事件处理方面 , 简化开发难度.
-> UIGesture Recognizer基类
是一个抽象类, 定义了所有手势的基本行为, 使用它的子类才能处理具体的手势
-
UIPinchGestureRecognizer (捏合, 用于缩放)
-
UISwipeGestureRecognizer (滑动,快速移动,是用于监测滑动的方向的)
-
UIPanGestureRecognizer (拖移,慢速移动,是用于监测偏移的量的)
->每一个手势识别器用法都差不多
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 4 //缩放 5 [self testPinch]; 6 7 //旋转 8 [self testRotation]; 9 10 11 } 12 13 #pragma mark -- 测试缩放 14 - (void)testPinch 15 { 16 // 创建缩放手势识别器 17 UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)]; 18 // 设置控制器为代理 19 pinch.delegate =self; 20 //添加手势识别器 21 [self.iconView addGestureRecognizer:pinch]; 22 } 23 24 // 这个方法调用频率非常高 25 - (void)pinchView:(UIPinchGestureRecognizer *)pinch 26 { 27 28 // 在这个pinch.view.transform上 缩放X Y的比例 29 pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale); 30 31 //缩放一下,立刻初始化当前比例为1,保证当前比例一直为1 32 pinch.scale = 1; 33 34 35 } 36 37 38 #pragma mark -- 测试选装 39 40 - (void)testRotation 41 { 42 // 创建旋转手势识别器 43 UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(RotationView:)]; 44 // 设置当前控制器为代理 45 rotation.delegate = self; 46 // 添加手势识别器 47 [self.iconView addGestureRecognizer:rotation]; 48 } 49 50 51 // 这个方法调用频率非常高 52 - (void)RotationView:(UIRotationGestureRecognizer *)rotote 53 { 54 // 在self.rotationView.transform 角度基础上, 加上右边的角度 55 rotote.view.transform = CGAffineTransformRotate(rotote.view.transform, rotote.rotation); 56 //先清0,保证每旋转一下之后,当前角度都为0, 57 rotote.rotation = 0; 58 } 59 60 61 #pragma mark -- 代理啊方法 62 63 /** 64 * 可判断 gestureRecognizer 和 otherGestureRecognizer 返回的手势识别器是否一样, 65 * 允许多个手势识别器同时有效 66 * 67 * @param gestureRecognizer 传入的第0个手势识别器 68 * @param otherGestureRecognizer 传入的第1个手势识别器 69 * 70 * @return YES : 同时有效 71 */ 72 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 73 { 74 return YES; 75 }