2009-12-10 92 views
6

如何检测左键或右键点击状态栏图标,并根据鼠标按钮(触控板)被点击,进行一些操作?Objective-C:NSStatusBar左键和右键点击

我用:

_statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain]; 
    [_statusItem setMenu:menu]; 
    [_statusItem setHighlightMode:YES]; 

要生成的状态栏。图标

回答

13

要检测当前按下鼠标按键,就可以使用[NSEvent pressedMouseButtons]

要检测被点击的状态栏图标,您可以检测到出现的菜单。在菜单打开之前,它会向其委托(如果有)发送menuWillOpen:消息。因此,实施这样的事情:通过

[menu setDelegate:self]; 
3

- (void)menuWillOpen:(NSMenu *)menu 
{ 
    NSLog(@"%d",[NSEvent pressedMouseButtons]); 
} 

您还需要设置代理的菜单,比如我已经找到另一种解决方案,在这里看到。

Cocoa: Right Click NSStatusItem