iOS 事件分发

2017-07-07  本文已影响0人  Hardy_Hu

事件分发

事件分发过程包含两方面:

  1. 点击事件的传递过程,主要是通过Hit-TestView查找当前被点击的点属于哪一个View。
  2. 响应链,事件的响应过程,主要是某个View如何响应点击事件。

点击事件传递

当点击屏幕时,通过hit-testing找到触摸点所在的view,查找过程如下:

总结下点击事件的传递,从window开始查找,一层一层的遍历其subview,找到被点击的点在哪个View。 从大View到小View查找。

事件响应链

通过hit-testing找到响应的view之后,点击事件就交给它来处理,此时hit-testView就是firstResponder,如果它无法响应事件,则把事件交给它的父View,直到有事件的响应者或传递到appDelegate结束为止。
这一系列的响应者和事件的传递方向就是响应链,在响应链中,所有响应者的基类都是UIResponder, 也就是说所有可以响应事件的类都是UIResponder的子类。

总结下事件响应:从子View开始响应事件,如果不能响应,则往上看父View是否能响应,如果能响应则响应,如果不能则继续往上查找直到appDelegate结束。从小View到大View查找。

上一篇下一篇

猜你喜欢

热点阅读