有没有办法以编程方式突出显示状态栏项?

时间:2013-01-12 18:23:57

标签: objective-c macos cocoa highlight nsstatusitem

我想执行以下操作:
当我点击状态栏项目(NSStatusItem)时,我想无限期地突出显示它(没有菜单),当应用程序失去焦点时,我想停止突出显示它。

有没有办法做到这一点?我找不到了,tbh。

2 个答案:

答案 0 :(得分:2)

您可以使用sends the status item a drawStatusBarBackgroundInRect:withHighlight: message

的自定义视图执行此操作

我怀疑没有任何方法可以在没有自定义视图的情况下执行此操作,因为正如我在问题评论中提到的那样,当用户没有按下鼠标时保持项目突出显示它看起来很糟糕。

答案 1 :(得分:2)

老问题,但我认为值得添加这个替代答案。

当应用程序失去焦点时,这不会自动取消突出显示,但这允许您在不使用自定义视图的情况下突出显示(如other answer所要求的那样):

NSStatusItem *statusItem = [self getStatusItem];
[statusItem.button setHighlighted:YES];

您可以使用相同的方法手动取消高亮显示:

[statusItem.button setHighlighted:NO];

注意我从类似问题here得到了这个答案。