【发布时间】:2012-04-05 01:06:30
【问题描述】:
我制作了一个自定义的 NSView 并实现了keyDown: 方法。但是,当我按键时,该方法永远不会被调用。我必须注册才能接收这些事件吗?仅供参考,我正在制作一个基于文档的应用程序,并且可以在任何地方处理此代码(不必在此视图中)。在基于文档的应用程序中执行此操作以使事件在整个应用程序中发生的最佳位置是什么?
【问题讨论】:
标签: cocoa keydown document-based
我制作了一个自定义的 NSView 并实现了keyDown: 方法。但是,当我按键时,该方法永远不会被调用。我必须注册才能接收这些事件吗?仅供参考,我正在制作一个基于文档的应用程序,并且可以在任何地方处理此代码(不必在此视图中)。在基于文档的应用程序中执行此操作以使事件在整个应用程序中发生的最佳位置是什么?
【问题讨论】:
标签: cocoa keydown document-based
在斯威夫特中:
class MDView: NSView {
override var acceptsFirstResponder: Bool { return true }
}
【讨论】:
您需要覆盖 -acceptsFirstResponder 以返回 YES。
【讨论】:
initialFirstResponder,或在IB中连接它。其他时候,您可以使用-makeFirstResponder:。另外,请确保您的窗口可以成为关键。