【问题标题】:Can I open an NSMenu programatically?我可以以编程方式打开 NSMenu 吗?
【发布时间】:2015-08-17 11:46:15
【问题描述】:

正如标题所说,我想以一定的时间间隔自动打开菜单。最好从程序本身内部进行,因为我确信我可以使用我不想使用的 applescripts+cron 手动执行某些操作。

我说的是 OSX 菜单栏中的菜单/按钮/任何内容。只是要清楚。没有自定义视图,只有一个普通的 nsmenu。

【问题讨论】:

    标签: macos menubar nsmenu


    【解决方案1】:

    为了打开 NSStatusItem 菜单,我发现在属于 NSStatusItem 的按钮上调用 performClick 方法更容易。这样我就不必担心正确地将事件或视图传递给popUpContextMenu。像这样的:

    statusItem.button?.performClick(nil)
    

    【讨论】:

    • 看起来像这样:statusItem.button?.performClick(nil)
    【解决方案2】:

    您可以通过调用以编程方式显示NSMenu

    [NSMenu popUpContextMenu:YOUR_MENU withEvent:MOUSE_EVENT forView:YOUR_VIEW]
    

    要构造事件,您可以使用NSEvent's +mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:

    注意:如果您的菜单是NSStatusItem 菜单,您必须设置项目的视图才能弹出菜单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2015-05-01
      相关资源
      最近更新 更多