iOS事件的传递

事件的传递

1、点击View产生一个触摸事件,这个事件会被添加到UIApplication管理的队列中。

2、当UIApplication从队列中取出此触摸事件时会把它传给应用程序的主窗口。

3、窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件。


*找到最合适视图的过程:1> 首先判断主窗口自己是否能接收触摸事件,然后再判断触摸点是否在自己身上。</br>2、如果触摸点在窗口身上,那么窗口就会从后向前的遍历自己的子控件。</br>3、遍历子控件的过程就是每个子控件重复上面的两个步骤,如此循环直到找到最合适的view。</br>4、找到最合适的view就会调用其touches方法来处理事件。之所以采用由后向前的遍历方式只是为了降低循环次数</br>
*寻找最合适view的底层剖析:只要事件一传递给控件,控件就会调用他自身的hitTest:withEvent方法(首先调用当前控件的pointInside:withEvent:方法判断触摸点是否在当前视图内,若返回NO,则hitTest:withEvent返回nil;若返回YES,则向当前视图的所有子视图发送hitTest:withEvent:消息,直到有子视图返回非空对象)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容