2009-12-10 142 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