美文网首页
UI事件传递&响应

UI事件传递&响应

作者: 暴躁的小豆子 | 来源:发表于2019-12-16 11:30 被阅读0次

说UI事件之前我们先看一下UIView&CALayer

关系

联系

UIView 中属性lyaer其实就是CALayer类型的,backgroundColor是对CALayer同名属性的包装,UIView的显示部分是由CALayer的contents来决定的,它对应backing store(其实是bitmap类型的位图),最终我们显示到屏幕上的UI空间可以理解成位图

区别

UIView 为CALayer提供显示的内容,以及负责处理触摸等事件,参与视图的事件响应链
CALayer 负责显示内容contents
\color{red}{这里体现了设计原则中的单一设计原则(一个类只负责一件事)}

事件传递&事件响应链

b1

例如 上图(b1) 试图点击视图c2,系统如何找到事件响应的视图,事件传递离不开两个方法

//响应试图的view
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
//判断点击位置是否在当前试图内,在就返回yes
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
事件传递流程
流程图

从流程图中可以看到,UIWindow会调用hitTest方法,系统hitTest方法中会去调用pointInside方法来判断点击是否在当前试图中,如果返回YES遍历当前试图,这里是从后往前遍历(即倒序遍历)他的子试图,子试图会去调用hitTest方法(如果子试图还有子试图,会去遍孙子视图,孙子视图会去hitTest方法)找到响应试图并结束流程,如果都没有找到返回当前视图Window

hitTest:withEvent:内部实现

按钮区域点击响应实例

相关文章

  • UI事件传递&响应

    UIView与CALayer的关系与区别 UIView为CALayer提供内容,以及负责触摸等事件,参与响应链CA...

  • UI事件传递&响应

    说UI事件之前我们先看一下UIView&CALayer 联系 UIView 中属性lyaer其实就是CALayer...

  • UI事件传递&响应

    UIView和CALayer之间的关系和区别UIView和CALayer UIView实际上里面有的属性,一个CA...

  • UI事件传递&事件响应

    响应链工作原理 点击某一控件到其响应相关事件其实是分为两步:事件的传递与事件的响应 事件分发与传递:自上而下 事件...

  • iOS-UI部分知识点整理

    UITableView相关 事件传递&视图响应 系统的UI事件传递机制是怎么样的 ? 使UITableView滚动...

  • 面试知识集-UI事件传递,图像显示,性能优化,离屏渲染

    UIView与CALayer关系 事件传递与视图响应链 事件传递与视图响应链 图像显示原理 UI卡顿掉帧分析及解决...

  • OC总结篇 - UI视图

    UI视图 - 图像显现原理和滑动优化UI视图 - UI事件传递及视图响应链UI视图 - UITableView重用...

  • UI事件传递与响应

    先了解下UIView与CALayer的关系 UIView为CALayer提供内容,负责处理触摸事件,参与响应链 ,...

  • iOS体系

    UI视图 UITableView 事件传递&视图响应 图像显示原理 UI卡顿、掉帧 UI绘制原理/异步绘制 离屏渲...

  • UI响应链,事件分发,以及修改响应控件

    UI响应链,事件传递 一、事件分发(为了寻找响应事件的控件) 1.当我们点击屏幕的时候,系统会将我们的点击事件添加...

网友评论

      本文标题:UI事件传递&响应

      本文链接:https://www.haomeiwen.com/subject/xfcqnctx.html