2014-10-06 86 views
0

我正在研究一个Cocoa应用程序,最终只有2个项目在主窗口菜单中。不包含在这些项目中的是“编辑”菜单项。是否可以在没有“编辑”的情况下将“编辑”项目的所有功能添加到应用程序中?我正在谈论所有的复制,粘贴,撤消等....我知道可以通过在窗口控制器中添加键盘监听器来实现这一点,但是我想知道这是否可以以其他方式完成?是否有可能在没有“编辑”菜单项的可可应用程序中具有“编辑”功能?

我想以不同的方式做这件事的原因是,我仍然想在本机关于窗口中使用这些命令。该窗口没有控制器(我知道)可以添加侦听器。如果任何人有关于如何做到这一点的替代想法,我都会听。

回答

3

是的。编辑菜单项只是向“响应者链”发送任意“消息”。

[[NSApplication sharedApplication] sendAction:@selector(copy:) to:nil from:self]; 

如果查看界面生成器中的事件菜单项,可以看到正在发送的选择器列表。

从文档:

如果aTarget是nil,sharedApplication寻找一个对象,可以给消息,也就是说,一个实现方法匹配anAction对象响应。它从关键窗口的第一响应者开始。如果第一响应者不能响应,它会尝试第一响应者的下一个响应者,并继续跟随下一响应者链接响应者链。如果密钥窗口的响应者链中没有任何对象可以处理消息,则sharedApplication会尝试将消息发送到密钥窗口的委托。

更多详情请看这里:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW2

+0

+1,但这个词狡辩 “任意”。它们实际上是特定的消息(与任意相反),但也许你想表达它们是普通的。 – 2014-10-06 23:02:47

+0

完美!这正是我需要的。谢谢。 :) – bhawley 2014-10-06 23:20:47

相关问题