我对可可编程很新,我想问一下是否有人可以解释如何
-(BOOL)makeFirstResponder:(NSResponder *)responder;
方法有效。我计划将它用于NSEvent
,但有人可以告诉我如何实现它吗?
我正在尝试使用NSResponder
类来为我提供一个有效的-keyDown
方法。
答案 0 :(得分:3)
NSResponder是Cocoa中的基础类之一。任何可以响应按键或菜单命令等事件的类都应该是NSResponder的子类。每个响应者跟踪它的“下一个响应者”,并且每个窗口跟踪当前是“第一响应者”的对象。当事件在窗口中发生时,将向第一响应者发送消息。如果该对象处理该消息,那很好。如果没有,它会将其传递给下一个响应者。这被称为“响应者链”。
通常情况下,你不会对Cocoa中的响应者链造成太大的影响。第一个响应者主要由用户操作决定,例如单击控件。
将它用于NSEvent是没有意义的。 NSEvent不是响应者,而是使响应者能够完成工作的东西。
如果你更清楚地描述你想要完成的事情,我相信我们可以指出你正确的方向。
答案 1 :(得分:2)
您通常不会实现-makeFirstReponder:
,您可以将其设置为将输入焦点设置为视图。你真正想要实现的是什么?
答案 2 :(得分:1)
我正在尝试使用NSResponder类来为我提供一个有效的keyDown方法。
这没有意义。 “使用”一个班级?
如果您想回复关键事件,通常应该在能够成为第一响应者的视图中执行此操作(请参阅the NSView docs)。
另请参阅Event-Handling Guide(您应该可以访问的View Programming Guide,WWDC 2010 session videos和会话145的视频(“可可应用程序中的关键事件处理”)通过您的开发者帐户,即使您去年没有去过WWDC)。