【发布时间】:2014-04-27 13:00:58
【问题描述】:
在基于 NSDocument 的应用程序中,拦截 CmdAnyKey 键事件的最合适位置是什么?
目的是切换到活动窗口中的某个组件 - 有点像 Firefox 允许您切换选项卡 - 无需在菜单命令上使用匹配的快捷方式来执行该任务。
即理想情况下,框架应该进行正常处理,包括处理菜单命令,并且在所有其他响应者未能响应该特定快捷方式之后,它应该被路由到自定义方法。
我搜索了NSDocument、NSAppDelegate、NSWindowController,但找不到任何合适的机制来挂钩以便在窗口级别接收这些命令。
那么缺乏任何现有的自定义机制确实会在自定义NSWindowController 中覆盖keyDown: 看起来是达到预期效果的最合适的方式吗?
【问题讨论】:
-
您是否尝试过查看 Cntl-Tab(注意:Cntl-Tab,而不是 Cmd-Tab)是否自动工作?它在 Safari 中切换选项卡。也许这是一个系统范围的快捷方式?另外,处理这种事情的普通
NSResponder不应该是你使用的吗? -
NSWindowController实现NSResponder。 Firefox 是一个应用程序拦截命令的示例,它没有处理该特定热键的菜单项。这个问题更笼统。
标签: cocoa nsdocument nswindowcontroller nsevent nsresponder