以编程方式触发时突出显示NSStatusItem

时间:2014-07-20 19:41:13

标签: macos nsstatusitem nsstatusbar

我有一个NSStatusItem附加菜单,我用全局热键触发。如果我单击菜单项,我会像往常一样突出显示,如果我使用热键,则突出显示不会被触发。有没有人知道触发亮点的方法?

我已尝试覆盖视图并在drawRect中自行绘制,但如果有更好的方法可以做到这一点,我很乐意听到。谢谢!

我不想覆盖视图的原因是我必须处理图标定位,点击激活菜单等。

2 个答案:

答案 0 :(得分:2)

这在使用Xcode 10的macOS 10.13.6中起到了神奇的作用。

guard let m = statusItem.menu else { return }
statusItem.button?.isHighlighted = true
statusItem.popUpMenu(m)
statusItem.button?.isHighlighted = false

请注意,关闭菜单后,需要最后一行来取消突出显示图标。

答案 1 :(得分:1)

使用:

[[statusItem button] highlight:true];

事实证明setHighlighted:highlight不做同样的事情:
NSStatusBarButton keep highlighted