iOS事件传递和事件响应

UIApplication运行着一个runloop在接受触摸事件,当接收到触摸后将事件交给keywindow去处理,然后通过一系列的事件传递找到合适的view。
hitTest方法的内部流程
1,判断自己能否接收事件。
2,判断下点在不在当前视图 pointInside: withEvent: ,如果在,继续下一步。
3,从后往前遍历自己的子控件。
4,如果没有比自己合适的子控件,那么这个最合适的View就是自己返回self。

然后会调用touchesBegan方法,向上传递给 响应者,这就是响应者链条

响应者链条

响应者链条:由多个响应者一起形成的链条
作用:能清楚的看到每个响应者的联系,同时可以让一个事件多个对象处理。
响应者对象:能处理事件的对象。

如何判断上一个响应者:
如果view是控制器view,那么控制器就是上一个响应者,否则父控件就是上一个响应者,如果一直找不到响应者会最终会到AppDelegate,如果AppDelegate内没有实现该事件方法,将会崩溃。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容