Cocoa touch 使用第一响应者和第一响应者与目标行动

Cocoa touch 使用第一响应者和第一响应者与目标行动,cocoa-touch,first-responder,Cocoa Touch,First Responder,我了解目标行动的用途和需要。 但我遇到了“第一反应者”的概念。 有人能解释为什么需要它吗?在应用程序中,首先接收多种事件的响应者对象称为第一响应者。它接收关键事件、运动事件和动作消息等。(鼠标事件和多点触控事件首先进入鼠标指针或手指下的视图;该视图可能是也可能不是第一响应者。)第一响应者通常是应用程序认为最适合处理事件的窗口中的视图。要接收事件,响应者还必须表明其愿意成为第一响应者;对于每个平台,它都以不同的方式执行此操作 在设计应用程序时,您可能希望动态响应事件。例如,触摸可能发生在屏幕上的许

我了解目标行动的用途和需要。 但我遇到了“第一反应者”的概念。
有人能解释为什么需要它吗?在应用程序中,首先接收多种事件的响应者对象称为第一响应者。它接收关键事件、运动事件和动作消息等。(鼠标事件和多点触控事件首先进入鼠标指针或手指下的视图;该视图可能是也可能不是第一响应者。)第一响应者通常是应用程序认为最适合处理事件的窗口中的视图。要接收事件,响应者还必须表明其愿意成为第一响应者;对于每个平台,它都以不同的方式执行此操作

在设计应用程序时,您可能希望动态响应事件。例如,触摸可能发生在屏幕上的许多不同对象中,您必须决定要对给定事件做出响应的对象,并了解该对象如何接收事件

当用户生成的事件发生时,UIKit将创建一个事件对象,其中包含处理该事件所需的信息。然后将事件对象放置在活动应用程序的事件队列中。对于触摸事件,该对象是打包在UIEvent对象中的一组触摸。对于运动事件,事件对象因使用的框架和感兴趣的运动事件类型而异

事件沿着特定路径移动,直到它被传递到可以处理它的对象。首先,singleton UIApplication对象从队列顶部获取一个事件并将其分派以进行处理。通常,它将事件发送到应用程序的关键窗口对象,该对象将事件传递给初始对象进行处理。初始对象取决于事件的类型

触摸事件。对于触摸事件,窗口对象首先尝试将事件传递到发生触摸的视图。该视图称为命中测试视图。查找点击测试视图的过程称为点击测试,如“点击测试返回发生触摸的视图”文档所述

用于运动和远程控制事件。通过这些事件,窗口对象将抖动运动或远程控制事件发送给第一响应者进行处理。“响应器链由响应器对象组成”中描述了第一个响应器

这些事件路径的最终目标是找到能够处理和响应事件的对象。因此,UIKit首先将事件发送到最适合处理事件的对象。对于触摸事件,该对象是点击测试视图,对于其他事件,该对象是第一响应者

有关更多信息,请查看