1

我对可可编程相当陌生,我想问是否有人可以向我解释该 -(BOOL)makeFirstResponder:(NSResponder *)responder;方法的工作原理。我打算使用它,NSEvent但谁能告诉我如何实现它?

我正在尝试使用该NSResponder课程为我提供一种工作-keyDown方法。

4

3 回答 3

3

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

通常,您不会对 Cocoa 中的响应者链进行过多处理。第一响应者主要由用户操作决定,例如单击控件。

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

如果您更清楚地描述您要完成的工作,我相信我们可以为您指明正确的方向。

于 2011-04-01T19:46:10.123 回答
2

您通常不实现-makeFirstReponder:,而是调用它来将输入焦点设置为视图。你真正想要达到的目标是什么?

于 2011-04-01T19:38:22.013 回答
1

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

那没有意义。“使用”一个类?

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

另请参阅WWDC 2010 会议视频中的Event-Handling GuideView Programming Guide和第 145 场会议的视频(“Cocoa 应用程序中的关键事件处理”)(您应该能够通过您的开发者帐户访问这些视频,即使您去年没去WWDC)。

于 2011-04-02T11:57:55.710 回答