我使用NSMenu和NSStatusItem以这种方式长时间在状态栏上显示自定义菜单:
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:18] retain];
[statusItem setImage:[NSImage imageNamed:@"myIcon"]];
[statusItem setMenu:myMenu];
[statusItem setHighlightMode:NO];
...
开始点击图片图标即可正常工作。 但我注意到状态栏上的苹果菜单可以通过鼠标移动简单触发,如机场菜单,电源菜单,语言菜单和日期/时间菜单。 当鼠标走过时,它们都会自动弹出。 他们是怎么得到的?
我已经使用“mouseEntered”事件检查了NSView的“添加跟踪矩形”,但事情并不像我想的那么困难。
有什么建议吗?
答案 0 :(得分:1)
我认为statusItem不是受支持的鼠标事件,但您可以设置statusItem的视图并覆盖鼠标偶数方法以支持鼠标事件,如下所示:
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
NSButton *nb = [[NSButton alloc] init];
[nb setImage:image];
[nb setAction:@selector(statusItemClick:)];
[_statusItem setView:nb];
这里只是一个将视图设置为statusitem的示例,如果要支持鼠标事件,您的视图必须扩展相同的视图并创建NSTrackingArea并实现moveMoved,mouseEntered和mouseExited方法(或者您想要的任何一个)