启用和禁用通用 Window 菜单命令

Enabling and Disabling Generic Window Menu Command

当您让应用程序打开 window (NSWindow) 时,window 名称后的命令会出现在 Window menu 下方,如下所示,其中一个命令中的一个指向主应用程序 window,另一个指向打开的 window.

如果我知道 window 用户将要显示的名称,我该如何启用和禁用该命令?我想以下是行不通的。

- (void)closeGenericWindow {
    NSString *windowName = NSLocalizedString(@"controlListWindow",@"");
    NSMenuItem *windowMenuItem = [[NSMenuItem alloc] initWithTitle:windowName action:nil keyEquivalent:@""];
    [windowMenuItem setEnabled:NO];
}

我 运行 搜索了“[objective-c] [cocoa] disable window.”,我没有找到任何相关内容,除了 this topic,这表明我在header。但是命令本身并不存在,直到用户实际选择打开有问题的 window。

非常感谢

可能有几种方法可以解决这个问题:

  • 首先,您可以将 window 的 excludedFromWindowsMenu 属性 设置为 YES 以简单地将 window 从菜单中排除。
  • 同样,没有 title 的 windows 不会出现在该菜单中。
  • 最后,您可以将 -canBecomeKeyWindow 覆盖为 return NO,我认为这应该会禁用该菜单。您可能需要覆盖 -canBecomeMainWindow 来代替或另外覆盖。