iOS一共提供了6种类型的手势操作,分别为:点击、捏合、旋转、滑动、拖动、长按。手势需要添加到UIView类以及其子类之上,同时每个UIView可以添加多个手势。
适合对象:中级学习者
运行环境:Xcode7 + iOS9
一、UIGestureRecognizer类简介
UIGestureRecognizer类是一个抽象类,不能直接使用,具体使用过程中需要使用其子类。UIGestureRecognizer一共包括6个子类,分别对应6种手势,即:
UIRotationGestureRecognizer:旋转
UIPanGestureRecognizer:拖动,其又包含另外一个子类:UIScreenEdgePanGestureRecognizer
UILongPressGestureRecognizer:长按
二、UIGestureRecognizer创建方法
创建一个UIGestureRecognizer子类对象需要有4个步骤:
创建一个UIView类的对象;
创建一个手势类对象,并使用- initWithTarget:action:方法进行对象初始化,设置当手势事件发生时,调用的方法;
为UIView对象添加手势,使用 addGestureRecognizer:方法;
实现手势事件发生时所调用的方法。
三、UIGestureRecognizer类常用属性以及方法
3.1 初始化手势
– (instancetype)initWithTarget:(nullable id)target action:(nullable SEL)action;//初始化手势对象,并设置手势发生时调用的方法
3.2 获取手势点击的位置
– (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(nullable UIView*)view; // 获取手势点击的位置;
3.3 获取手势点击的状态和视图
@property(nonatomic,readonly)UIGestureRecognizerStatestate;
其中:常用的UIGestureRecognizerState有:
UIGestureRecognizerStateBegan:开始手势事件
UIGestureRecognizerStateEnded:结束手势事件
UIGestureRecognizerStateChanged:手势位置发生变化
UIGestureRecognizerStateFailed:无法识别的手势
@property(nullable,nonatomic,readonly)UIView*view;//手势事件对应的视图对象