启用和禁用通用 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
来代替或另外覆盖。
当您让应用程序打开 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
覆盖为 returnNO
,我认为这应该会禁用该菜单。您可能需要覆盖-canBecomeMainWindow
来代替或另外覆盖。