美文网首页
iOS 事件响应原理:从点击屏幕到作出反馈

iOS 事件响应原理:从点击屏幕到作出反馈

作者: Allan_野草 | 来源:发表于2018-10-19 11:51 被阅读14次

先来大致说一下原理:

1、第一步,定位点击了哪个view

一个应用,有那么多的界面元素,应用怎么就知道我点击了哪里呢?
层层叠加的view,它是叠加在它的父view的,so,追溯父view到尽头,会有一个根。这样会形成一个树状结构,也就是我们的图层树。

从根向它的子结点,逐个询问“这个点击是不是落到你这里”?如果是,询问这个结点的子结点,这样遍历下去,找到最顶的的子结点,也就是叠加到最顶端的view。

2、第二步,作出反馈

找到了具体点击哪个view了,那么下面让view来作出反馈响应,
如果能,这个流程就结束了。
如果不能,view是叠加在它的父view上的,不能响应,就说明view只是作为一个单纯的图层,从用户角度,那么这个点击,应该是落在它的父view上面。

以此类推,向父view一直找,找到能作出反馈的,处理掉,一个点击事件就结束。

如何实现

上面的步骤一,称为事件分发。询问的这个动作,通过UIView的-hitTest:withEvent方法来实现,方法内部通过调用-pointInside:withEvent:判断触点是否发生在该view内部并递归调用,直到找到最终的subview。

步骤二,涉及到一个叫响应者链。也就依次找父view去处理的这个链条。我们view不能处理的话,会交由它的viewController去处理。

完整流程:

1、用户触发事件
2、UIkit框架将事件封装成UIEvent,把event加入到当前活动的app的事件队列中
3、下一次main runloop时,app把event从事件队列中取出,把event传递给key window对象
4、事件分发
5、通过响应者链,处理事件
6、找不到响应的,丢弃,不作任何处理

官图了解一下:


相关文章

  • iOS 事件响应原理:从点击屏幕到作出反馈

    先来大致说一下原理: 1、第一步,定位点击了哪个view 一个应用,有那么多的界面元素,应用怎么就知道我点击了哪里...

  • iOS事件传递及响应者链条

    这里, 将带你解析"从你的手指触摸屏幕, 到App作出响应"这段历程中究竟发生了什么事. 什么是事件? iOS中事...

  • iOS响应链机制

    寻找第一响应者原理如下: 1.当用户点击屏幕时,会产生触摸事件,系统会将该事件加入到一个由UIAplication...

  • UI事件传递&事件响应

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

  • RAC常用方法汇总

    一、iOS内部对不同事件的处理 iOS中对不同事件作出响应时,会用不同的方式来处理这些业务逻辑。比如按钮的点击使用...

  • RAC之常用方法汇总

    一、iOS内部对不同事件的处理 iOS中对不同事件作出响应时,会用不同的方式来处理这些业务逻辑。比如按钮的点击使用...

  • 响应者链浅谈

    响应者对象 响应者对象(Response object) 响应者对象就是可以响应事件并对事件作出处理。iOS中UI...

  • iOS编程中的快递小哥-Responder Chain(响应链)

    今天我们来聊下iOS编程中常见点击事件从分发传递到响应的完整流程? 1.事件类别 Touch eventsUIVi...

  • 响应者链条

    今天我们来聊下iOS编程中常见点击事件从分发传递到响应的完整流程? 1.事件类别 Touch eventsUIVi...

  • ios 事件传递和响应

    史上最详细的iOS之事件的传递和响应机制-原理篇iOS触摸事件传递响应之被忽视的手势识别器工作原理手势事件中can...

网友评论

      本文标题:iOS 事件响应原理:从点击屏幕到作出反馈

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