首页 > 代码库 > UI第四课

UI第四课

主要内容:事件处理(触摸、响应者链)

一、事件的基本概念

       UIEvent:事件,是由硬件捕捉的一个表示用户操作设备的对象

       分三类:触摸事件、晃动事件、远程控制事件

       触摸事件:用户通过触摸设备屏幕操作对象、输入数据。支持多点触摸

       触摸的概念:

              UIView支持触摸事件(因为继承于UIResponder),而且支持多点触摸

              需要定义UIView子类,实现触摸相关的方法

              touches...began          / / 开始触摸

              touches...moved         / / 触摸过程中

              touches...ended          / / 结束触摸

              touches...canceled     / / 触摸暂停

      使用触摸实现手势:

      手势:有规律的触摸

       UITouch代表触摸在屏幕上的一根手指,可以获取触摸时间和位置

二、响应者链

       由多个响应者对象组成的链

       UIResponder:响应者类

       iOS中所有能响应事件(触摸、晃动、远程事件)的对象都是响应事件

       系统定义了一个抽象的父类UIResponder来表示响应者,其子类是响应者

       检测触碰视图:

              硬件检测到触摸操作,会将信息传递给UIApplication,开始检测

              UIApplication  ->window  ->viewController  ->view  ->检测所有子视图,最终确认触碰位置,完成响应者链的查询过程

              检测到响应者后,实现touchesBegan:withEvent等方法,即处理事件

              如果响应者没有处理事件,事件会向下传递,如果没有响应者处理事件,则丢弃触摸事件

              事件处理的顺序和触摸检测查询相反

              触摸子视图 ->view  ->viewController  ->window  ->UIApplication

     四个方法

            / / 开始触摸

            - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

            {

            }

           / / 触摸过程中   

           - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent)event

           {

           }

          / / 触摸停止

          - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent)event

          {

          }

         / / 触摸暂停

         - (void)touchesCanceled:(NSSet *)touches withEvent:(UIEvent *)event

         {

         }

UI第四课