我有一个带有 NSWindowController(故事板入口点)的故事板,其内容是 NSViewController。当用户在我的应用程序中选择一个菜单项时,我会加载情节提要并显示它。
现在我想要“退出”键来关闭窗口。我已经看到了几个关于此的问题,但没有一个与我所看到的行为相匹配。
我将 NSWindowController 和 NSViewController 子类化,并将情节提要中的控制器设置为这些。我已经尝试了所有我能找到或想到的方法,包括:
override func cancelOperation(_ sender: Any?)
func cancel(_ sender: Any?)
override func keyDown(with event: NSEvent)
在窗口控制器、视图控制器,甚至是自定义的 NSWindow 子类中,但这些方法都没有被调用。我已经确认viewDidLoad()
并且windowDidLoad()
确实会被调用,所以我的课程正在被使用。他们只是没有得到事件。
为了验证我的理智,我尝试检查响应者链。 正如预期的那样,我的自定义窗口控制器和视图控制器类都在其中,NSWindow 子类也是如此。
为什么响应者链中的 NSResponder 对象不会收到事件?