-makeFirstResponder:用法

时间:2011-04-01 19:32:15

标签: objective-c cocoa nsresponder

我对可可编程很新,我想问一下是否有人可以解释如何 -(BOOL)makeFirstResponder:(NSResponder *)responder;方法有效。我计划将它用于NSEvent,但有人可以告诉我如何实现它吗?

我正在尝试使用NSResponder类来为我提供一个有效的-keyDown方法。

3 个答案:

答案 0 :(得分:3)

NSResponder是Cocoa中的基础类之一。任何可以响应按键或菜单命令等事件的类都应该是NSResponder的子类。每个响应者跟踪它的“下一个响应者”,并且每个窗口跟踪当前是“第一响应者”的对象。当事件在窗口中发生时,将向第一响应者发送消息。如果该对象处理该消息,那很好。如果没有,它会将其传递给下一个响应者。这被称为“响应者链”。

通常情况下,你不会对Cocoa中的响应者链造成太大的影响。第一个响应者主要由用户操作决定,例如单击控件。

将它用于NSEvent是没有意义的。 NSEvent不是响应者,而是使响应者能够完成工作的东西。

如果你更清楚地描述你想要完成的事情,我相信我们可以指出你正确的方向。

答案 1 :(得分:2)

您通常不会实现-makeFirstReponder:,您可以将其设置为将输入焦点设置为视图。你真正想要实现的是什么?

答案 2 :(得分:1)

  

我正在尝试使用NSResponder类来为我提供一个有效的keyDown方法。

这没有意义。 “使用”一个班级?

如果您想回复关键事件,通常应该在能够成为第一响应者的视图中执行此操作(请参阅the NSView docs)。

另请参阅Event-Handling Guide(您应该可以访问的View Programming GuideWWDC 2010 session videos和会话145的视频(“可可应用程序中的关键事件处理”)通过您的开发者帐户,即使您去年没有去过WWDC)。