NSStatusItem.popUpMenu的替代品是什么?

时间:2018-10-01 05:56:23

标签: cocoa popupmenu nsstatusitem macos-mojave

NSStatusItem.popUpMenu在macOS 10.14中已被弃用,但我找不到合适的替代方法。

let m = statusItem.menu!
statusItem.popUpMenu(m) // deprecated

我尝试使用菜单和按钮直接弹出窗口,但是位置不正确。

let m1 = m.items.first!
m.popUp(positioning: m1, at: .zero, in: statusItem.button!)

1 个答案:

答案 0 :(得分:4)

Xcode建议使用menu属性而不是popupMenu。但是,一旦设置了menu属性,每次单击该项目将仅显示菜单。

相反,如果您想控制显示菜单的时间(例如仅响应右键单击),则手动触发菜单的一种简单方法是在您的performClick上调用NSStatusBarButton处理程序。

statusItem.menu = myMenu
statusItem.button?.performClick(nil)
statusItem.menu = nil

如果您想自己继续处理点击,则必须将menu设置为nil。