objective-c – 当单击NSStatusItem时检测它是否有菜单?

objective-c – 当单击NSStatusItem时检测它是否有菜单?,第1张

概述我有一个NSStatusItem,点击时有一个下拉菜单: [statusItem setMenu:statusMenu]; 由于我正在使用菜单,因此此代码无法检测何时单击状态项: [statusItem setAction:@selector(isClicked :)]; 如何使用菜单但同时知道单击状态项? 为此,您将为菜单设置委托. 首先,在接口文件(.h)中将类设置为NSMenu的委托.例如: 我有一个NsstatusItem,点击时有一个下拉菜单:

[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时检测它是否有菜单?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存