IOS深入学习(25)之Responder object

2024-05-03 16:32

本文主要是介绍IOS深入学习(25)之Responder object,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 前言

    本文主要介绍了响应对象的相关内容,和事件在响应链上的传递过程。

    转载请注明出处:http://blog.csdn.net/developer_zhang

2 详述

  响应者是一个能够响应事件和处理他们的对象。所有响应者对象都是本质上继承自UIResponder(IOS)或者是NSResponder(OS X)的类实例。这些类为响应者声明了为事件处理和定义了一个默认的行为的纲领性接口。app的可视对象几乎都是响应者--例如:windows,views,和controls-并且app对象也是响应者。在IOS中,视图控制器(UIViewController对象)也是响应对象。

  为了接受事件,一个响应者必须实现适当的事件-处理方法,有时候,告诉app它可以成为第一响应者。

2.1 第一响应者首先接受事件

  在app中,被我们称作first responder的响应者对象首先接受各种类型的事件。它接受关键事件,动作事件,和动作信息在其他的之中。(鼠标事件和多点触控事件首先来到在鼠标或者手指的点击下的视图中;视图可能或者不一定会成为第一响应者)第一响应者是典型的window中的app认为最合适与处理事件的视图。为了接受一个事件,响应者必须也能够表明它愿意成为第一响应者;对于不同的平台它以不同的方式处理这些:

//OS X
-(BOOL)acceptsFirstResponder{return YES;}
//IOS
-(BOOL)canBecomeFirstResponder{return YES;}

  除此之外接受事件消息,一个响应者能够接受没有指明目标的动作消息。(当用户操作他们的时候动作信息通过controls被发送,例如buttons和controls)

2.2 响应链能够合作处理事件

  如果第一响应者不能够处理事件或者动作消息,它向在连续的链中的“next responder”传递,这个链被称作响应链(responder chain)。响应链允许响应对象传递处理一个事件或者动作消息给app中的其他对象的责任。如果一个响应链中的对象不能够处理事件或者动作,它传递消息给下一个链中的响应者。消息传递于链中,向最高级别对象传递,知道它被处理。如果没有被处理,app就会丢弃它。

事件的路径:事件的一般路径是开始于一个view--第一响应者或者是鼠标或者手指下面的视图,沿着响应链传递。从那里出发,沿着视图层级结构进行然后传向全局app对象。然而,IOS中的事件的响应链对于这个路径添加了变化:如果视图被一个view controller所管理并且视图不能够处理事件,view controller 称为下一个响应者。

动作消息的路径:对于动作消息,IOS和OS X都扩展了对于其他对象的响应链。在OS X中,动作信息的响应链对于基于文档创建的app,使用window controllers(NSWindowController)的app,和适应那些类别的app是不同的。此外如果app在OS X中拥有关键window和main window的两者,响应链在一个动作信息传递之中可能包含两个windows的层级视图。


3 结语

  以上是所有内容,希望对大家有所帮助。

这篇关于IOS深入学习(25)之Responder object的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957157

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

深入探讨Java 中的 Object 类详解(一切类的根基)

《深入探讨Java中的Object类详解(一切类的根基)》本文详细介绍了Java中的Object类,作为所有类的根类,其重要性不言而喻,文章涵盖了Object类的主要方法,如toString()... 目录1. Object 类的基本概念1.1 Object 类的定义2. Object 类的主要方法3. O

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert