iOS事件响应和传递

事件传递和响应:

UIView和CALayer.png
  • UIView和CALayer的联系
    UIView中的layer就是CALayer类型,UIView的backgrouColor是对CALayer同名属性的包装,UIView的显示是由CALayer的contents来决定的。contents对应的是backing store,是一个bitmap类型的位图。最终显示在屏幕上的控件,都可以理解为bitmap类型的位图。

  • UIView和CALayer的区别
    UIView为CALayer提供显示的内容,以及处理触摸等事件,参与响应链;
    CALayer负责内容显示contents

这么设计体现了单一职责原则。

1.事件传递流程:
事件传递方法.png
事件传递流程.png

点击屏幕 -> 事件传递给UIApplication ->传给UIWindow
UIWindow会根据hittestWithEvent方法来返回最终响应的视图。
UIWindow先根据pointInside方法来判断点击事件是否在UIWindow范围内,如果在范围内,则倒序遍历UIWindow子视图(最后添加的子视图先被判断)来查找响应view。

系统内部实现.png
2.事件响应流程:
事件响应方法.png
事件传递.png

其他文章:
https://blog.csdn.net/ios_xumin/article/details/116044182

你可能感兴趣的:(iOS事件响应和传递)