2012-11-05 33 views

回答

5

要完成此操作,您需要設置菜單的代理。

首先,在接口文件(.h)中設置該類作爲代理NSMenu。例如:你的初始化狀態項時

@interface MyClass : NSObject <NSMenuDelegate> 
. . . 
@end 
在實現文件(.M)

然後使用這樣的代碼:

//your status item initialization code. Then: 
[statusItem setMenu:statusMenu]; 
[statusMenu setDelegate:self]; 

如果你願意,給你的菜單中的標題(可完成如果您在Interface Builder中創建了菜單,則在「屬性檢查器」下使用Xcode Interface Builder)。這樣做是爲了消除與其他菜單的差異。

則此方法添加到您的類的實現(.M)文件:

-(void)menuWillOpen:(NSMenu *)menu{ 
    if([[menu title] isEqualToString:@"Menu's title"]){ 
     //RUN CODE WHEN STATUS ITEM IS CLICKED 
    } 
} 

這就是它!你甚至可以使用下面的代碼時,菜單關閉檢測:

-(void)menuDidClose:(NSMenu *)menu{ 
    if([[menu title] isEqualToString:@"Menu's title"]){ 
     //RUN CODE WHEN MENU IS CLOSED 
    } 
} 

被點擊的狀態項時,可以知道現在,即使您正在使用的菜單。