我可以以编程方式打开 NSMenu 吗?
Posted
技术标签:
【中文标题】我可以以编程方式打开 NSMenu 吗?【英文标题】:Can I open an NSMenu programatically? 【发布时间】:2015-08-17 11:46:15 【问题描述】:正如标题所说,我想以一定的时间间隔自动打开菜单。最好从程序本身内部进行,因为我确信我可以使用我不想使用的 applescripts+cron 手动执行某些操作。
我说的是 OSX 菜单栏中的菜单/按钮/任何内容。只是要清楚。没有自定义视图,只有一个普通的 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
菜单,您必须设置项目的视图才能弹出菜单。
【讨论】:
以上是关于我可以以编程方式打开 NSMenu 吗?的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式创建带有 NSMenuItems 的 NSMenu?