IOS

关注公众号 jb51net

关闭
首页 > 软件编程 > IOS > iOS button响应流程

iOS button响应流程图文详解

作者:i_erlich

这篇文章主要为大家介绍了iOS button响应流程图文详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

Button响应首先从触摸屏幕开始

在这之前,需要了解坐标转换及原因

程序员的逻辑往往如图所示

也就是UI逻辑中,使用的坐标点往往是相对于父布局的,而布局会嵌套多层

屏幕上的触点,判断落点归属于哪个UI控件的话,就需要让所有UI控件的坐标点转换为相对于 window的

这样转换后的坐标就变为

直观是这样的逻辑,但真实的检测过程实际是 按照ui嵌套层级关系递归进行的,也就是从window开始,一级一级子视图倒序遍历进行

这样在每递归到某一层view时,就需要对此view子视图进行检测,这个时候就需要把当前view上的触点坐标转换为 子视图view上的坐标

说白了,在检测阶段,每次递归检测时,转换坐标 就是遍历子view时,point从相对于当前view 改变为 相对于 子view,也就是改变了参考基点

简单梳理流程

apple-touch封装

touchBegan/touchMoved/touchEnded/touchCancelled 是底层的方式

apple提供了高级封装 UIGestureRecognizerUIControl

UIGestureRecognizer 包含8种手势

window sendTouchesForEvent 后续流程修正

上面的流程是基于底层方式描述,针对于apple封装的 UIGestureRecognizer,做出调整

window 查询到具体的 响应者之后

还有一些额外设定, 比如:

流程进一步细化

UIControl 是UIView子类

保持前面修正的流程

UIControl 提供自定义行为

以上就是iOS button响应流程图文详解的详细内容,更多关于iOS button响应流程的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文