iOS 开发UI中轻拍,长按,旋转手势识别器方法

一、监听触摸事件的做法
 
如果想监听一个view上面的触摸事件,之前的做法通常是:先自定义一个view,然后再实现view的touches方法,在方法内部实现具体处理代码
通过touches方法监听view触摸事件,有很明显的几个缺点
(1)必须得自定义view
(2)由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件(需要通过代理)
(3)不容易区分用户的具体手势行为
iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer),在触摸事件处理方面,大大简化了开发者的开发难度
二、手势识别器
为了完成手势识别,必须借助于手势识别器----UIGestureRecognizer
利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势
UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 
UITapGestureRecognizer(轻拍)
UIPinchGestureRecognizer(捏合,用于缩放)
UIPanGestureRecognizer(拖拽)
UISwipeGestureRecognizer(轻扫)
UIRotationGestureRecognizer(旋转)
UILongPressGestureRecognizer(长按)
UIScreenEdgePanGestureRecognizer(屏幕边缘轻扫)

代码说明:手势的常用状态如下

开始:UIGestureRecognizerStateBegan

改变:UIGestureRecognizerStateChanged

结束:UIGestureRecognizerStateEnded

取消:UIGestureRecognizerStateCancelled

失败:UIGestureRecognizerStateFailed

 

 
(一)、轻拍手势
 
每一个手势识别器的用法都差不多,比如UITapGestureRecognizer的使用步骤如下:
(1)创建手势识别器对象
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
(2)设置手势识别器对象的具体属性
// 连续轻拍2次
tap.numberOfTapsRequired = 2;
// 需要2根手指一起触摸
tap.numberOfTouchesRequired = 2;
(3)添加手势识别器到对应的view上
[self.iconView addGestureRecognizer:tap];
(4)监听手势的触发
[tap addTarget:self action:@selector(tapIconView:)];
属性介绍:
numberOfTouchesRequired   //需要多少根手指一起轻拍(默认为1根)
numberOfTapsRequired    //需要轻拍多少下(默认为1)
技术分享
 
 
实现方法
 
技术分享
 
 
(二)、长按手势
 
技术分享
 
 
实现方法
 
 
技术分享
 
 
(三)、旋转手势

  UIRotationGestureRecognizer手势识别器,就像名称一样,这个类能用来监听和捕获旋转的手势,能帮助你创建出更直观的图形用户界面,比如一种场景,当你的应用中有一个展示图片的视图,用户需要通过旋转图片来调整图片的方向。 

        UIRotationGestureRecognizer这个类有一个rotation的属性,这个属性可以用来设置旋转的方向和旋转的弧度。旋转是从手指的初始位置(UIGestureRecognizerStateBegan)到最终位置(UIGestureRecognizerStateBegan)决定的。 

为了对继承自UIView的UI元素进行旋转,你可以将旋转手势识别器的rotation属性传递给CGAffineTransformMakeRotation方法,以制作一个仿射转场

 

技术分享

 

 

实现方法

 

技术分享

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。