Object c事件链传递

简介: Object c事件链传递

在Objective-C中,事件传递通常指的是用户交互事件(如触摸、点击等)在视图层次结构中的传递过程。这个过程主要涉及到两个核心概念:事件响应链(Event Responder Chain)和视图层次结构(View Hierarchy)。


事件响应链(Responder Chain):

在Objective-C中,事件响应链是一系列响应者对象(UIResponder的子类实例,如UIView、UIViewController等)的集合。

当一个事件发生时,系统会首先将事件传递给第一响应者(通常是用户触摸的视图)。

如果第一响应者不处理该事件,事件就会沿着响应链向上传递,直到有响应者处理该事件或者事件被丢弃。

视图层次结构(View Hierarchy):

视图层次结构是所有UIView对象的树状结构,每个UIView对象都是其子视图的父视图。

事件传递会首先在视图层次结构中从上到下进行,直到找到最合适的视图来处理该事件。

在事件传递过程中,以下是一些关键的步骤和方法:


触摸事件(TouchEvent):

当用户触摸屏幕时,会产生一个触摸事件,这个事件会被封装成一个UIEvent对象。

触摸事件的传递从UIApplication对象开始,然后传递给 UIWindow 对象,最后传递给UIView对象。

事件传递方法:

touchesBegan:withEvent:: 当一个触摸事件开始时调用。

touchesMoved:withEvent:: 当触摸点在屏幕上移动时调用。

touchesEnded:withEvent:: 当触摸事件结束时调用。

touchesCancelled:withEvent:: 当触摸事件被取消时调用。

响应者链的传递:

如果一个视图不处理事件,它会将事件传递给其父视图。

如果视图控制器(UIViewController)也不处理事件,事件会继续传递给窗口(UIWindow)对象。

最后,如果事件仍然没有被处理,它会被传递给UIApplication对象。

理解Objective-C中的事件传递机制对于开发iOS应用程序非常重要,因为它决定了用户的交互如何被应用程序响应和处理


目录
相关文章
|
12月前
|
JavaScript 前端开发
49dwr - 传递额外的数据到 callback 函数
49dwr - 传递额外的数据到 callback 函数
36 0
|
9天前
|
设计模式 Python
深度解密为什么实例在调用方法时会将自身传给 self 参数(二)
深度解密为什么实例在调用方法时会将自身传给 self 参数(二)
23 1
|
9天前
|
缓存 Python
深度解密为什么实例在调用方法时会将自身传给 self 参数(一)
深度解密为什么实例在调用方法时会将自身传给 self 参数
21 0
|
2月前
|
安全 Java 数据库连接
|
5月前
|
Java
如何在事件处理方法中获取事件的来源对象?
如何在事件处理方法中获取事件的来源对象?
|
5月前
|
存储 安全 Java
调用链跨线程传递 ThreadLocal 对象对比
说起本地线程专属变量,大家首先会想到的是 JDK 默认提供的 ThreadLocal,用来存储在整个链路中都需要访问的数据,并且是线程安全的。由于在落地全链路压测的过程中,一个基本并核心的功能需求是流量标记需要在整个链路中进行传递,那么线程上下文环境成为解决这个问题最合适的技术。
71 2
调用链跨线程传递 ThreadLocal 对象对比
|
数据处理 对象存储
关于 Observable 对象调用 subscribe 方法时不传递任何参数值的用法讨论
关于 Observable 对象调用 subscribe 方法时不传递任何参数值的用法讨论
|
API C#
我不想再传递 nameof 了
有的时候抛出一个异常,我们需要知道是哪个方法抛出的异常。那么,我们可以通过传递 nameof 来获取调用者的方法名。但是,感觉很烦,每次都要传递 nameof。那么,有没有更好的方法呢?
91 0
我不想再传递 nameof 了
属性传递
属性传递
67 0
|
编译器
详解函数的三种传递方式
详解函数的三种传递方式
171 0