1

I understand the use and need of target-actions. But I encountered this concept of "First Responder". Can someone explain why is it needed? What can it do that can't be done using target-actions?

4

1 回答 1

2

在应用程序中,首先接收多种事件的响应者对象称为第一响应者。它接收关键事件、运动事件和动作消息等。(鼠标事件和多点触控事件首先进入鼠标指针或手指下方的视图;该视图可能是也可能不是第一响应者。)第一响应者通常是应用程序认为最适合处理的窗口中的视图一个事件。要接收事件,响应者还必须表明其愿意成为第一响应者;它针对每个平台以不同的方式执行此操作

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

当用户生成的事件发生时,UIKit 会创建一个事件对象,其中包含处理该事件所需的信息。然后它将事件对象放入活动应用程序的事件队列中。对于触摸事件,该对象是封装在 UIEvent 对象中的一组触摸。对于运动事件,事件对象根据您使用的框架和您感兴趣的运动事件类型而有所不同。

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

触摸事件。对于触摸事件,窗口对象首先尝试将事件传递给发生触摸的视图。该视图称为命中测试视图。查找命中测试视图的过程称为命中测试,在“命中测试返回发生触摸的视图”中进行了描述。博士。

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

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

欲了解更多信息,请看这里...

于 2013-07-22T07:31:46.687 回答