ios 手势
2015-05-29 08:54
459 查看
iOS手势UIGestureRecognizer UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势: 1、拍击UITapGestureRecognizer (任意次数的拍击) 2、捏合UIPinchGestureRecognizer (用于缩放) 3、摇动或者拖拽UIPanGestureRecognizer 4、扫动UISwipeGestureRecognizer (以任意方向) 5、旋转UIRotationGestureRecognizer (手指朝相反方向移动) 6、长按UILongPressGestureRecognizer 对于不同类型的手势识别器,具有不同的配置属性。比如UITapGestureRecognizer,可以配置拍击次数。界面接收到手势之后,可以发送一个消息,用于处理响应手势动作后的任务。当然,不同的手势识别器,发送的消息方法也会有所不同。 下面讲解一下各个手势识别器的使用步骤: 注意各个手势识别器使用前均需开启多点触控! UITapGestureRecognizer: //1、创建轻击手势识别器 //2、配置属性(numberOfTapsRequired需要轻击次数,numberOfTouchesRequired需要几点同时触摸才能触发) //3、添加轻击手势识别器 示例代码: //创建轻击手势识别器 UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapHandle:)]; tapGestureRecognizer.numberOfTapsRequired = 2;//需要轻击两次才能触发 tapGestureRecognizer.numberOfTouchesRequired = 2;//需要两点同时触摸才能触发 //添加轻击手势识别器 [self.view addGestureRecognizer:tapGestureRecognizer]; UISwipeGestureRecognizer //1、创建扫动手势识别器 //2、配置属性(direction扫动方向:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight,UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionDown) //3、添加扫动手势识别器 //4、在扫动手势识别器触发的方法中判断direction属性识别扫动方向。 示例代码: //1、创建扫动手势识别器 UISwipeGestureRecognizer * leftAndRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)]; //2、配置属性(direction扫动方向:) leftAndRight.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight; [self.view addGestureRecognizer:leftAndRight]; UISwipeGestureRecognizer * upAndDown = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)]; upAndDown.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown; //3、添加扫动手势识别器 [self.view addGestureRecognizer:upAndDown]; //4、在扫动手势识别器触发的方法中判断direction属性识别扫动方向。 int opt = recognizer.direction; if(opt == (UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)){ self.messageLabel.text = @"发生了水平方向的扫动!"; } else if (opt == (UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown)){ self.messageLabel.text = @"发生了竖直方向的扫动!"; } UIPinchGestureRecognizer //1、创建捏合手势识别器 //2、添加捏合手势识别器 //3、在捏合手势识别器触发的方法中捏合。 //3.1获取imageView的frame //3.2设置frame大小的宽和高,获取手势识别器的缩放倍数(recognizer.scale)*图片的宽和高。 //3.3重置imageView的frame //3.4重置mageView的center -(void)changeImageSize:(UIPinchGestureRecognizer *)recognizer { CGRect frame = self.imageView.frame; frame.size.width = recognizer.scale * 128; frame.size.height = recognizer.scale * 128; self.imageView.frame = frame; self.imageView.center = self.view.center; } UIRotationGestureRecognizer //1、创建旋转手势识别器 //2、添加旋转手势识别器 //3、在旋转手势识别器触发的方法中旋转。 - (void)rotateImage:(UIRotationGestureRecognizer *)recognizer { if([recognizer state] == UIGestureRecognizerStateEnded) { self.lastRotation = 0.0; return; } CGAffineTransform currentTransform = self.imageView.transform; CGFloat rotation = 0.0 - (self.lastRotation - recognizer.rotation); CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation); self.imageView.transform = newTransform; self.lastRotation = recognizer.rotation; }
相关文章推荐
- IOS 开发学习28 NSArray 基本用法
- iOS 逆向之ARM汇编
- iOS开发笔记18--SEL (@selector) 原理及使用总结(二)
- iOS开发笔记17-SEL (@selector) 原理及使用总结(一)
- iOS开发笔记16--第三方登陆
- 解决Xcode package manager无法使用
- ios开发-日期处理(类似朋友圈,微博等的发送时间)
- ios与js交互,获取webview完整url,title,获取元素并赋值跳转
- ios时间与日期的处理
- 浅谈iOS面向对象之类与对象
- ios动画学习(一)
- iOS将汉字转化成oc字符串
- iOS开发-retain/assign/strong/weak/copy/mutablecopy/autorelease区别
- iOS - 中三种定时器的用法NSTimer、CADisplayLink、GCD
- IOS 6 自动布局 入门-1
- 控制器View的生命周期图解
- ios8.3 编译 arm64版 openssl-1.0.2a
- IOS框架图
- 如何在开发IOS项目时获取当前项目的名称和版本号
- 使用Xcode和Instruments调试解决iOS内存泄露