Hop*_*You 4 macos cocoa menu objective-c nsstatusitem
点击时我有一个NSStatusItem下拉菜单:
[statusItem setMenu:statusMenu];
由于我正在使用菜单,因此此代码无法检测何时单击状态项:
[statusItem setAction:@selector(isClicked:)];
如何使用菜单但同时知道单击状态项?
为此,您将为菜单设置委托.
首先,在接口文件(.h)中将类设置为委托NSMenu.例如:
@interface MyClass : NSObject <NSMenuDelegate>
. . .
@end
Run Code Online (Sandbox Code Playgroud)
然后在实现文件(.m)中初始化状态项时使用这样的代码:
//your status item initialization code. Then:
[statusItem setMenu:statusMenu];
[statusMenu setDelegate:self];
Run Code Online (Sandbox Code Playgroud)
如果您愿意,可以为菜单添加标题(如果您在Interface Builder中创建了菜单,则可以在"属性检查器"下的Xcode Interface Builder中完成).这样做是为了消除与其他菜单的差异.
然后将此方法添加到类的实现(.m)文件中:
-(void)menuWillOpen:(NSMenu *)menu{
if([[menu title] isEqualToString:@"Menu's title"]){
//RUN CODE WHEN STATUS ITEM IS CLICKED
}
}
Run Code Online (Sandbox Code Playgroud)
而已!您甚至可以使用以下代码来检测菜单何时关闭:
-(void)menuDidClose:(NSMenu *)menu{
if([[menu title] isEqualToString:@"Menu's title"]){
//RUN CODE WHEN MENU IS CLOSED
}
}
Run Code Online (Sandbox Code Playgroud)
即使您使用菜单,现在也可以知道何时单击状态项.
| 归档时间: |
|
| 查看次数: |
1358 次 |
| 最近记录: |