美文网首页
消息响应链

消息响应链

作者: 麋晓鹿 | 来源:发表于2017-05-04 16:26 被阅读12次

当用户点击了屏幕中的button,事件是如何响应的呢,为什么点击其他区域没有事件响应呢?事件又是怎么触发的呢?


屏幕快照 2017-05-04 下午3.58.28.png

首先当用户点击button后,操作系统监听到用户点击了某点的位置,将该消息传递给当前APP的运行循环

在程序内部的流程图大概如下


运行循环 .png

1.当前的运行循环监听到屏幕上有一点被触摸,运行循环将该消息传递给UIApplication,查找触摸对象
2.UIApplication将消息传递给UIWindow,查找触摸对象
3.UIWindow将消息传递给根控制器
4.根控制器将消息传递给self.view
5.self.view会查找所有的子视图,判断触摸的点在哪个子控件内,然后将消息传递给子控件
6.子控件查找该触摸点在哪个控件内,查找到button后,button,button之下没有了子控件,那么该button就是第一事件响应者,触摸的对象就是button
7.button调用touchBegin方法,将消息发送给子控件,
子控件在调用touchBegin方法,将消息发送给self.view
以此类推一直传递到运行循环
8.运行循环就知道,点击用户点击的是button按钮,就会去查找button是否注册了事件,注册了就会调用该事件,没有注册,该消息会被丢弃。

事件传递设计的方法
1.从上到下查找对象用 hitTest方法
2.事件响应,用touchXXX方法

相关文章

  • 消息响应链

    当用户点击了屏幕中的button,事件是如何响应的呢,为什么点击其他区域没有事件响应呢?事件又是怎么触发的呢? 首...

  • iOS面试-基础

    [toc] Runloop AutoReleasePool 多线程 响应者链 消息响应机制 消息转发机制 iOS内...

  • ios响应者链

    iOS 响应者链 字数418 阅读41 评论0 喜欢3 响应者链 响应者链是一个响应者的连接序列,事件或者动作消息...

  • iOS 响应者链

    响应者链 响应者链是一个响应者的连接序列,事件或者动作消息依次传递,它允许响应者把事件处理的职责转交给其他更高层次...

  • 响应者链

    响应者链 响应者链是一个响应者的连接序列,事件或者动作消息依次传递,它允许响应者把事件处理的职责转交给其他更高层次...

  • ios学习笔记之响应者链简记

    响应者链 响应者链是一个响应者的连接序列,事件或者动作消息依次传递,它允许响应者把事件处理的职责转交给其他更高层次...

  • 025-谈谈iOS UIResponder

    一句话:消息传递和响应者链

  • UIControl && UIGestureRecognizer

    事件传递和响应链 一. 事件传递 二.响应链 响应链: 三.UIGestureRecognizer 四.cance...

  • iOS中对于响应链的理解

    对于响应链的理解: 在IOS中,有响应者链对事件进行响应,所有的响应类都是UIResponder的子类,响应者链是...

  • 基于ResponderChain的事件传递

    ResponderChain对象交互方式本质 响应者链简介 Responder Chain也就是响应链,响应者链是...

网友评论

      本文标题:消息响应链

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