16

我读到了响应者链,基本上我读到了来自 UI 的事件是如何在响应者链上传递的,如何处理它们以及如何传递。我还使用了 -becomeFirstResponder 和 -resignFirstResponder,但我只将它们用于基本任务,例如在 iOS 上显示键盘和处理抖动事件。

我想知道的是如何在 Xcode 生成的 MainWindow.xib 中使用“First Responder”代理对象。我看到了一些收到的操作,并且我看到我可以在身份检查器选项卡上创建操作。

所以我的问题是:我怎样才能使用这些动作,我什么时候应该在 IB 中使用这个代理对象?!

界面生成器截图

提前致谢。

4

2 回答 2

8

将动作分配给第一响应者对象与以编程方式向具有 nil 目标的控件添加动作相同。当动作被触发时,应用程序将通过响应者链并将动作发送给接受它的第一个响应者。在 mac 上,常用于自动向当前窗口或文档发送菜单命令。如果您有多个要使用同一个按钮向其发送消息的对象,则应该使用它。

于 2011-01-11T02:45:08.673 回答
3

每当您希望将操作发送给第一响应者时,您将使用 First Responder 作为操作的目标,而不管发送操作时恰好是哪个特定对象。

在桌面 Cocoa 中,以 First Responder 为目标的消息实际上是一个nil-targeted action - 没有目标被隐式理解为第一个可能的响应者,即 First Responder。

通常,文本操作是针对第一响应者的。您希望将按键发送到具有焦点的任何文本字段,但具有焦点的文本字段会随着视图和应用程序的生命周期而变化。每次文本字段获得焦点时,您都​​可以手动重新定位操作,但多亏了NSResponder,您不必费心——这一切都为您处理好了。

于 2011-01-11T02:42:34.623 回答