NSStatusItem.popUpMenu的替代品是什么?

Eon*_*nil 6 cocoa popupmenu nsstatusitem macos-mojave

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

let m = statusItem.menu!
statusItem.popUpMenu(m) // deprecated
Run Code Online (Sandbox Code Playgroud)

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

let m1 = m.items.first!
m.popUp(positioning: m1, at: .zero, in: statusItem.button!)
Run Code Online (Sandbox Code Playgroud)

小智 9

Xcode 建议使用menuproperty 而不是popupMenu. 但是一旦你设置了menu属性,每次点击该项目只会显示菜单。

相反,如果你想时显示的菜单控制,说只有在响应点击右键,然后一个简单的方法来手动触发菜单是通过调用performClickNSStatusBarButton的处理程序。

statusItem.menu = myMenu
statusItem.button?.performClick(nil)
statusItem.menu = nil
Run Code Online (Sandbox Code Playgroud)

menu如果您想自己继续处理点击,您必须重新设置为零。