【问题标题】:Is it possible to have 'Edit' functionality in a Cocoa applciation that doesn't have the 'Edit' menu item?是否可以在没有“编辑”菜单项的 Cocoa 应用程序中具有“编辑”功能?
【发布时间】:2014-10-07 06:35:04
【问题描述】:

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

我想做不同的原因是我仍然想在本机关于窗口中使用这些命令。该窗口没有可以添加侦听器的控制器(我知道)。如果有人对如何做到这一点有其他想法,我会全神贯注。

【问题讨论】:

    标签: objective-c macos cocoa keyboard-shortcuts about-box


    【解决方案1】:

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

    [[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

    【讨论】:

    • +1 但对“任意”这个词提出了质疑。它们实际上是特定的消息(与任意相反),但也许您的意思是要传达它们是普通的。
    • 完美!这正是我需要的。谢谢。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2010-11-01
    • 2015-12-07
    相关资源
    最近更新 更多