iOS触摸事件

(一) IOS中的事件

(1)响应者对象:只有继承了UIResponder的对象才能处理事件。UIView,UIViewController,UIApplication都是响应者对象。 

(2)事件:

 

 

(3)UIView触摸事件

(4)参数:

     1.touches继承UITouch对象。一根手指对应一个UITouch对象。里面保存着和本次手指触摸相关的位置,事件,阶段。当手指移动的时候系统会更新同一个UITouch,离开屏幕的时候会销毁。

    2.touches属性:

    •触摸产生时所处的窗口window;
    •触摸产生时所处的视图view;
    •短时间内点按屏幕的次数,可以根据tapCount判断单击、双击或更多的点击tapCount;
    •记录了触摸事件产生或变化时的时间,单位是秒imestamp;
    •当前触摸事件所处的状态 phase;

    3.touches方法

(5)View响应事件:多个View叠加,触摸后则是一层层响应的。

(6)UIView不接受触摸的三种情况

    1.userInteractionEnable = false

    2.hidden = true

    3.alpha = 0.0 ~ 0.01

    注意:ImageView的用户交互默认就是NO。    

               如果父控件关了用户交互,那么子控件也无法用户交互。

               按钮直接就触发单击事件了。不触发父控件的touchBegin了。

(7)触摸事件响应原理:有一个hitTest方法。然后在里面递归,最终找到本点击View。

         发生触摸后,系统会将触摸事件加入由UIApplicaion管理的事件队列中。然后队列取出最前最上面的事件处理,发送给应用程序主窗口(keywindow),主窗口调用hitTestWithEvevt方法找到一个最合适的子视图来处理触摸事件。

(8)响应者链条:只要继承了Responder的都死响应者对象。那么View一整个触摸的过程就是响应者链条。

(9)一般View触摸事件 :在应用程序已启动会启动运行循环。一直在等待用户交互。  当触摸,循环接受事件,告诉APP 告诉Window 告诉子控制器,一层层响应。然后到最底层,super 父类有依次响应,再给运行循环。

posted @ 2016-08-25 15:02  三更小新  阅读(122)  评论(0编辑  收藏  举报