我正在开发一个 Cocoa 应用程序,它最终在主窗口菜单中只有 2 个项目。这些项目中不包括“编辑”菜单项。是否可以在没有“编辑”的情况下将“编辑”项的所有功能添加到应用程序?我说的是所有的复制、粘贴、撤消等。我知道可以通过在窗口控制器中添加键盘侦听器来做到这一点,但我想知道这是否可以通过其他方式完成?
我想做不同的原因是我仍然想在本机关于窗口中使用这些命令。该窗口没有可以添加侦听器的控制器(我知道)。如果有人对如何做到这一点有其他想法,我会全神贯注。
我正在开发一个 Cocoa 应用程序,它最终在主窗口菜单中只有 2 个项目。这些项目中不包括“编辑”菜单项。是否可以在没有“编辑”的情况下将“编辑”项的所有功能添加到应用程序?我说的是所有的复制、粘贴、撤消等。我知道可以通过在窗口控制器中添加键盘侦听器来做到这一点,但我想知道这是否可以通过其他方式完成?
我想做不同的原因是我仍然想在本机关于窗口中使用这些命令。该窗口没有可以添加侦听器的控制器(我知道)。如果有人对如何做到这一点有其他想法,我会全神贯注。
是的。编辑菜单项只是向“响应者链”发送任意“消息”。
[[NSApplication sharedApplication] sendAction:@selector(copy:) to:nil from:self];
如果您查看界面构建器中的事件菜单项,您可以看到正在发送的选择器列表。
从文档中:
如果aTarget 为nil,sharedApplication 会寻找一个可以响应消息的对象——即一个实现与anAction 匹配的方法的对象。它从关键窗口的第一个响应者开始。如果第一个响应者无法响应,它会尝试第一个响应者的下一个响应者并继续跟随下一个响应者链接响应者链。如果关键窗口的响应者链中没有任何对象可以处理该消息,sharedApplication 会尝试将消息发送给关键窗口的委托。
更多细节在这里: