我对可可编程相当陌生,我想问是否有人可以向我解释该
-(BOOL)makeFirstResponder:(NSResponder *)responder;
方法的工作原理。我打算使用它,NSEvent
但谁能告诉我如何实现它?
我正在尝试使用该NSResponder
课程为我提供一种工作-keyDown
方法。
我对可可编程相当陌生,我想问是否有人可以向我解释该
-(BOOL)makeFirstResponder:(NSResponder *)responder;
方法的工作原理。我打算使用它,NSEvent
但谁能告诉我如何实现它?
我正在尝试使用该NSResponder
课程为我提供一种工作-keyDown
方法。
NSResponder 是 Cocoa 中的基础类之一。任何可以响应按键或菜单命令等事件的类都应该是 NSResponder 的子类。每个响应者都跟踪它的“下一个响应者”,每个窗口都跟踪当前是“第一响应者”的对象。当窗口中发生事件时,会向第一响应者发送消息。如果该对象处理消息,那就太好了。如果没有,它会将其传递给下一个响应者。这被称为“响应者链”。
通常,您不会对 Cocoa 中的响应者链进行过多处理。第一响应者主要由用户操作决定,例如单击控件。
“将它用于 NSEvent”是没有意义的。NSEvent 不是响应者,而是使响应者能够完成工作的东西。
如果您更清楚地描述您要完成的工作,我相信我们可以为您指明正确的方向。
您通常不实现-makeFirstReponder:
,而是调用它来将输入焦点设置为视图。你真正想要达到的目标是什么?
我正在尝试使用 NSResponder 类为我提供一个有效的 keyDown 方法。
那没有意义。“使用”一个类?
如果您想响应关键事件,通常应该在能够成为第一响应者的视图中执行此操作(请参阅NSView 文档)。
另请参阅WWDC 2010 会议视频中的Event-Handling Guide、View Programming Guide和第 145 场会议的视频(“Cocoa 应用程序中的关键事件处理”)(您应该能够通过您的开发者帐户访问这些视频,即使您去年没去WWDC)。