这是我参与「第四届青训营 」笔记创作活动的的第13天,今天是8月16日,今天对学习的ios交互、手势的相关知识进行整理归纳。
手势识别器(UIGestureRecognizer)
UIGestureRecognizer 的子类:
UIPanGestureRecognizer(拖动)
UIPinchGestureRecognizer(捏合)
UIRotationGestureRecognizer(旋转)
UITapGestureRecognizer(点按)
UILongPressGestureRecognizer(长按)
UISwipeGestureRecognizer(轻扫)
创建手势识别器:
自定义手势时,需要 #import <UIKit/UIGestureRecognizerSubclass.h>
1.使用initWithTarget:action: 初始化方法来创建手势识别器(所有手势识别器的基类初始化方法)
2.通过addGestureRecogizer方法给UIView添加手势识别器(addGestureRecognizer是UIView的基类方法)
3.一个View中可以添加多个手势识别器
使用手势:
1.初始化方法创建手势识别器
2.设置手势识别器对象实例的相关属性(delegate等),delegate成员需要实现UIGestureRecognizerDelegate协议
3.通过addGestureRecogizer方法给UIView添加手势识别器
事件响应机制
iOS事件类型:触摸事件(点击、滑动)、运动事件(重力感应、摇一摇)、远程事件(手柄)
UITouch类(触摸事件)
抽象了手指触摸屏幕的一个类、每一个实例代表手指的一次触摸、携带有位置大小等关键信息
began:当用户用手指触摸屏幕时,会创建一个与手指相关联的UITouch集合(一根手指对应一个UITouch对象),touch对象保存着跟本次手指触摸相关的信息,比如触摸的位置、时间、阶段。
moved:手指移动时,系统会更新同一个UITouch对象,使之能够一直保存该手指在的触摸位置。
ended:当手指离开屏幕时,系统会销毁相应的UITouch对象。
UIEvent类(触摸事件)
抽象了由一个或多个UITouch所造成的一个事情,每一个实例代表一个触摸事件,如单击事件、长按事件等
成为事件对象,记录产生的时刻和类型,事件对象中包含:当前多点触摸序列相对应的所有触摸对象,还可以提供与特定视图或窗口相关联的触摸对象。
UIResponder类
响应和处理事件的类,当有事件发生时系统会去寻找最合适的UIResponder,系统告知UIResponder有事件发生时,会把相应的UIEvent传递
响应者:UIView、UIViewController、UIApplication、AppDelegate
总结
今天了解了iOS 交互、手势的相关知识,知道了手势响应的一些基本类和相关初始化方法。