Objective c 基于Cocoa documnt的应用程序不会对命令W执行任何操作

Objective c 基于Cocoa documnt的应用程序不会对命令W执行任何操作,objective-c,cocoa,macos,keyboard-shortcuts,Objective C,Cocoa,Macos,Keyboard Shortcuts,我希望它能按命令关闭⌘-W根据标准。窗口上有一个关闭按钮,它已启用,所以我不确定关闭命令键盘快捷键的作用是什么 内容视图是一个webview,如果这有什么区别的话 我已经实现了windowWillClose和windowshouldlclose,但在调试过程中按Command时,没有一个窗口被点击⌘-W.按Command时,屏幕顶部的文件菜单是否闪烁⌘-W这可能表明在关键事件进入正常响应程序链之前,它是否正在吞噬关键事件。例如,我相信您的webview中的某些javascript可能正在吞噬事件

我希望它能按命令关闭⌘-W根据标准。窗口上有一个关闭按钮,它已启用,所以我不确定关闭命令键盘快捷键的作用是什么

内容视图是一个webview,如果这有什么区别的话


我已经实现了
windowWillClose
windowshouldlclose
,但在调试过程中按Command时,没有一个窗口被点击⌘-W.

按Command时,屏幕顶部的文件菜单是否闪烁⌘-W这可能表明在关键事件进入正常响应程序链之前,它是否正在吞噬关键事件。例如,我相信您的webview中的某些javascript可能正在吞噬事件

通常命令⌘-W被发送到第一响应程序(通常是键盘焦点所在的控件),然后沿着响应程序链发送。本文件可能有助于:

有些事情可以尝试:

在webview外部创建一个文本字段,并查看命令⌘-当该文本字段具有焦点时,W工作。这可能与网络视图有关

启用
NSObjCMessageLoggingEnabled

这会产生大量的输出,但可以准确地显示在按Command后调用的方法⌘-W.

我没有文件菜单项,只有主菜单,因为文件在这个应用程序中没有任何意义?我将在文本字段中输入,并让您知道是否有关闭菜单项?也许你在删除“文件”菜单时删除了它。大多数基于文档的应用程序都有一个文件菜单。现在我添加了一个新的文件菜单,并将关闭菜单移到主菜单,它正在工作。。。但为什么会这样呢??我还试图实现performKeyEquivalent和performClose,但它们没有被调用。命令本身并没有什么特殊之处⌘-然而,它是股票文件>关闭窗口的快捷键。通过删除此菜单项,您也删除了键盘快捷键。Cmd-W只是该菜单项的快捷键,因此该菜单项需要存在并设置其等效键。还请注意,用户可以在系统首选项中重新映射键盘快捷键,因此您不希望在系统中的某个位置硬编码Cmd-W。