IOS开发UI系列之事件、触摸、手势和响应者链

事件
·事件:是当用户手指触击屏幕及在屏幕上移动时,系统不断发送给应用程序的对象.系统会将按照特定的路径传递给可以对其进行处理的对象.
·在ios中,一个UITouch对象表示一个触摸,一个UIEvent对象表示一个事件.事件对象中包含与当前多点触摸序列相对应的所有触摸对象,还可以提供与特定视图或串口相关联的触摸对象.
·事件包括:触摸事件(Multitouch events)、晃动事件(Accelerometer events)、远程事件(Remote control events)
 
触摸
·触摸:触摸的信息包括时间和空间两个方面,时间方面的信息称为阶段(phrase),表示触摸是否刚刚开始、是否正在移动或处于静止状态,以及何时结束.出了时间方面,触摸信息还包括当前在视图或窗口中的位置信息,以及之前的位置信息(如果有的话).当一个手指接触屏幕时,触摸就和某个窗口或视图关联在一起,这个关联在事件的整个生命周期都会得到维护.
·触摸事件的阶段: UITouchPhaseBegan —> UITouchPhaseMoved —> UITouchPhaseEnded
 
响应者链
·响应者链:由多个响应者对象组成的链,是一个响应者对象的链接序列,事件或动作消息依次传递.它允许响应者对象把事件处理的职责转交给其他更高层的对象.应用程序通过向上传递一个事件来查找合适的处理对象.
·响应者:ios所有能响应事件(触摸、晃动、远程事件)的对象都是响应者.
·系统定义了一个抽象的父类UIResponser来表示响应者,其子类都是响应者.
·硬件将测到触摸操作,会将信息交给UIApplication,开始检测:UIApplication —> window —> viewController —>view —>所有子视图, 最终确认触碰位置,完成响应链的查询过程.
·处理触摸事件:检测到响应者后,实现touchesBegan:withEvent:等方法,即处理事件.如果响应者没有处理事件,事件会向下传递,如果整个响应者链都没有响应者处理,则丢弃触摸事件.
·事件处理的顺序与触摸检测查询相反: 触摸的子视图 —> view —> viewController —> window —> UIApplication
·视图类的阻断响应者链属性:userInteractionEnabled,布尔类型,关闭后(设为NO)能阻断查询的过程,即不再对事件响应.

响应者链处理原则:
1.点击检测视图或者第一响应者传递事件或动作消息给它的视图控制器(如果没有一个视图控制器,就传递给它的父视图);
2.如果一个视图或它的视图控制器不能处理这个事件或动作消息,它将传递给该视图的父视图;
3.在这个视图层次中的每个后续的父视图遵循上述的模式;
4.最顶层的视图如果不能处理这个事件或动作消息,就传递给UIWindow对象来处理;
5.如果window对象不能处理,就传给单件应用程序对象UIApplication,如果应用程序对象也不能处理,就将抛弃它.

手势
·手势识别器:ios中比较抽象的一个类,用于识别一个手势.手势识别器是对触摸事件做了封装,手势识别器本身起到了识别作用.
·手势分类:tap(轻拍)  pan(平移)  pinch(缩放)  swipe(轻扫)  longPress(长按)  rotation(旋转)  screenEdgePan(屏幕边缘平移)

·view类视图的一个重要属性:transform : 它在矩阵层面上改变view的显示状态,能实现view的缩放、旋转、平移等功能
    平移:CGAffineTransformMakeTranslation
    缩放:CGAffineTransformMakeScale
    旋转:CGAffineTransformMakeRotation
 

你可能感兴趣的:(UI,ui,事件,手势,响应者链,触摸)