objective-c - 显示模态窗口时禁用(灰色)主菜单?

标签 objective-c cocoa

我使用以下方法在我的 Cocoa 应用程序中加载自定义文件导入窗口:

[NSApp runModalForWindow:window];

窗口显示得很好,并且是模态的。

但是,应用程序主菜单仍然处于事件状态(例如文件菜单和 项目),这使得模态显示变得多余。

我用谷歌搜索了这个,搜索了 stackoverflow 和 cocoa-dev,并搜索了 Apple 文档,但找不到关闭菜单的方法,或者至少找不到选定的菜单项。

有人建议使用这个:

NSModalSession session = [NSApp beginModalSessionForWindow:window];
[NSApp runModalSession];

但这似乎也不起作用。同样,窗口以模态方式显示,但主菜单仍处于事件状态。

谁能建议我在显示模态窗口时如何关闭主菜单(灰色菜单项)?

有没有一种方法可以在菜单级别一次完成此操作,或者我是否需要关闭每个单独的菜单项?

我一定是漏掉了重点,因为这种菜单行为在 Cocoa 应用程序中很常见。

谢谢

达伦。

最佳答案

我需要(在 AppDelegate 中)实现以下方法:

- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem

返回 NO 会禁用引用的菜单项。

现在一切正常。

关于objective-c - 显示模态窗口时禁用(灰色)主菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791890/

相关文章:

ios - 如何更改动画 UIImage 的持续时间?

objective-c - 如何很好地打印浮点值?

macos - SCNView 覆盖导致调整大小时撕裂

cocoa - NSMenuDelegate 问题

objective-c - 使用 Storyboard连接向下钻取的 NSSplitView socket

objective-c - 重置dispatch_once_t?

ios - 在 UITable View 单元格中滚动时自动分配 UISlider 值

objective-c - 当 KVO 从模型 setter 触发时,防止递归地重新输入observeValueForKeypath

cocoa - 文本在文本字段中重叠

ios - 如何在 AFnetworking 中设置内容类型