[statusItem setMenu:statusMenu];
由于我正在使用菜单,因此此代码无法检测何时单击状态项:
[statusItem setAction:@selector(isClicked :)];
如何使用菜单但同时知道单击状态项?
@H_403_18@解决方法 为此,您将为菜单设置委托.首先,在接口文件(.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 }}
即使您使用菜单,现在也可以知道何时单击状态项.
总结以上是内存溢出为你收集整理的objective-c – 当单击NSStatusItem时检测它是否有菜单?全部内容,希望文章能够帮你解决objective-c – 当单击NSStatusItem时检测它是否有菜单?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)