【问题标题】:MacOSX Add command to Dock iconMacOS 将命令添加到 Dock 图标
【发布时间】:2019-02-23 11:26:51
【问题描述】:

我想知道是否可以以编程方式将自定义命令添加到 Dock 图标选项(右键单击 Dock 图标时显示菜单)。

这可能吗?我怎么能做到这一点?我可以使用 Objective-C,我的目标是 MacOS Mojave

谢谢

【问题讨论】:

    标签: objective-c macos cocoa right-click dock


    【解决方案1】:

    有多种方法,一种是在applicationDockMenu: 中分配NSMenuAppDelegate 中。

    第二个选项是使用 xib 文件和Info.plist。这是 Xamarin 的教程,但在任何框架中都类似:https://docs.microsoft.com/en-us/xamarin/mac/user-interface/menu

    【讨论】:

    • 你知道是否可以为 QtApplication 重新实现 AppDelegate 吗?
    • 我不知道。
    • 那你能告诉我另一种向 Dock 图标添加自定义命令的方法吗?你说有多种方法,对吧?
    • 我添加了第二个。
    【解决方案2】:

    使用NSApplicationDelegat方法applicationDockMenu(_:)

    optional func applicationDockMenu(_ sender: NSApplication) -> NSMenu?
    

    允许委托为应用程序动态提供停靠菜单。

    讨论

    您还可以将 Interface Builder 中的菜单连接到 dockMenu 插座。应用程序指定停靠菜单的第三种方法是在 nib 中提供 NSMenu。

    如果此方法返回一个菜单,则此菜单优先于 nib 中的 dockMenu。

    每个菜单项的目标和操作都传递到停靠栏。选择菜单项后,停靠栏会向您的应用程序发送消息,该应用程序应调用 [NSApp sendAction:selector to:target from:nil]。

    要在 nib 中指定 NSMenu,请使用键 AppleDockMenu 将 nib 名称添加到 info.plist。指定笔尖名称时不带扩展名。然后创建从文件的所有者对象(默认为 NSApplication)到菜单的连接。将菜单连接到 NSApplication 的 dockMenu 插座。该菜单位于其自己的 nib 文件中,因此可以在请求 dockMenu 时延迟加载,而不是在启动时加载。

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      相关资源
      最近更新 更多