zoukankan      html  css  js  c++  java
  • UI开发--响应者链条

    一、触摸事件处理的详细过程

    用户点击屏幕后产生的一个触摸事件,经过一些列的传递过程后,会找到最合适的视图控件来处理这个事件

    找到最合适的视图控件后,就会调用控件的touches方法来作具体的事件处理

    touchesBegan…

    touchesMoved…

    touchedEnded…

    这些touches方法的默认做法是将事件顺着响应者链条向上传递,将事件交给上一个响应者进行处理

    二、响应过程

     一次完整的触摸事件的传递响应的过程

     UIAppliction --> UIWiondw -->递归找到最适合处理事件的控件-->控件调用touches方法-->判断是否实现touches方法-->没有实现默认会将事件传递给上一个响应者-->找到上一个响应者

     三、重要说明

     1.相关概念

    响应者链条:由很多响应者链接在一起组合起来的一个链条称之为响应者链条

    响应者:继承UIResponder的对象称之为响应者对象

     2.处理原则

    默认做法是将事件顺着响应者链条向上传递,将事件交给上一个响应者进行处理

     如何判断当前响应者的上一个响应者是谁?

     (1)判断当前是否是控制器的View, 如果是控制器的View上一个响应者就是控制器

     (2)如果当前不是控制器的View,上一个响应者就是父控件

     3.响应者链条有什么用?

     可以让一个触摸事件发生的时候让多个响应者同时响应该事件

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    {

        [super touchesBegan:touches withEvent:event];

        NSLog(@"%@" , self.class);

    }

    四、响应者链的事件传递过程

    如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图

    在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理

    如果window对象也不处理,则其将事件或消息传递给UIApplication对象

    如果UIApplication也不能处理该事件或消息,则将其丢弃。

    更多、更详细内容参考苹果文档:Event Delivery: The Responder Chain。

    文章转载自:http://www.cnblogs.com/wendingding/p/3795171.html

    文章版权归个人所有,转载时请在文章显眼位置给出本文链接。
  • 相关阅读:
    第一节:SpringMVC概述
    SpringMVC【目录】
    Windows 系统快速查看文件MD5
    (error) ERR wrong number of arguments for 'hmset' command
    hive使用遇到的问题 cannot recognize input
    Overleaf支持的部分中文字体预览
    Understanding and Improving Fast Adversarial Training
    Django2实战示例 第十三章 上线
    Django2实战示例 第十二章 创建API
    Django2实战示例 第十一章 渲染和缓存课程内容
  • 原文地址:https://www.cnblogs.com/xjshi/p/4356018.html
Copyright © 2011-2022 走看看