【发布时间】:2015-08-17 11:46:15
【问题描述】:
正如标题所说,我想以一定的时间间隔自动打开菜单。最好从程序本身内部进行,因为我确信我可以使用我不想使用的 applescripts+cron 手动执行某些操作。
我说的是 OSX 菜单栏中的菜单/按钮/任何内容。只是要清楚。没有自定义视图,只有一个普通的 nsmenu。
【问题讨论】:
正如标题所说,我想以一定的时间间隔自动打开菜单。最好从程序本身内部进行,因为我确信我可以使用我不想使用的 applescripts+cron 手动执行某些操作。
我说的是 OSX 菜单栏中的菜单/按钮/任何内容。只是要清楚。没有自定义视图,只有一个普通的 nsmenu。
【问题讨论】:
为了打开 NSStatusItem 菜单,我发现在属于 NSStatusItem 的按钮上调用 performClick 方法更容易。这样我就不必担心正确地将事件或视图传递给popUpContextMenu。像这样的:
statusItem.button?.performClick(nil)
【讨论】:
statusItem.button?.performClick(nil)
您可以通过调用以编程方式显示NSMenu:
[NSMenu popUpContextMenu:YOUR_MENU withEvent:MOUSE_EVENT forView:YOUR_VIEW]
要构造事件,您可以使用NSEvent's +mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:
注意:如果您的菜单是NSStatusItem 菜单,您必须设置项目的视图才能弹出菜单。
【讨论】: