2009-12-10 3 views
6

come rilevare il clic sinistro o destro sull'icona della barra di stato e quindi eseguire un'azione, a seconda del pulsante del mouse (trackpad) selezionato?Objective-C: NSStatusBar clic destro e sinistro

io uso:

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

Per generare la barra di stato l'icona

risposta

13

Per rilevare i pulsanti del mouse che sono attualmente premuti, è possibile utilizzare [NSEvent pressedMouseButtons].

Per rilevare l'icona della barra di stato su cui si fa clic, è possibile rilevare il menu visualizzato. Appena prima che un menu si apra, invia un menuWillOpen: messaggio al suo delegato (se ne ha uno). Quindi implementare qualcosa di simile:

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

È inoltre necessario impostare il delegato per il menu, ad esempio

[menu setDelegate:self];