判断一个NSMenu是不是打开

Posted

技术标签:

【中文标题】判断一个NSMenu是不是打开【英文标题】:Determine whether an NSMenu is opened判断一个NSMenu是否打开 【发布时间】:2011-06-05 10:52:05 【问题描述】:

我有一个 NSMenu,当用户单击状态栏中的 NSStatusItem 时会打开它。如何确定 NSMenu 是否打开(展开)?

谢谢!

【问题讨论】:

【参考方案1】:

您可以使用NSMenuDelegate 协议来处理menuWillOpenmenuWillClose 消息。使用menuWillOpen 设置一个布尔值,表示菜单已打开,使用menuWillClose 将其关闭。


更新:看起来menuWillClose: 不再是可用的委托方法。请改用menuDidClose:

【讨论】:

谢谢!但它仍然不起作用。我所做的是将 添加到接口文件中。然后在 .m 文件中我添加了两个方法:-(void) menuWillOpen:(NSMenu *) theMenu isClosed = NO; -(void) menuWillOpen:(NSMenu *) theMenu isClosed = NO; 够了吗?我做错了什么? 你必须在你的 awakeFromNib 方法中调用 [menu setDelegate:self] 或其他东西。 没问题!我犯了很多次忘记设置代表的错误,通常结果很奇怪......祝你好运! ;) 由于当前的 Mac 开发人员库没有 menuWillClose 方法,而是使用 menuDidClose: 方法。看看developer.apple.com/library/mac/#documentation/Cocoa/Reference/…

以上是关于判断一个NSMenu是不是打开的主要内容,如果未能解决你的问题,请参考以下文章

主线程 Runloop 在打开 nsmenu 时被阻塞

NSMenu 以编程方式选择项目

拦截 NSMenu 键事件

在扩展坞保持活动状态时隐藏 NSMenu

如何在打开时更新 NSMenu?

以编程方式创建带有 NSMenuItems 的 NSMenu?