从 Window 菜单中删除与选项卡相关的功能?
Remove tab-related functions from Window menu?
我正在自定义 Mac Catalyst 应用程序中的菜单。我添加了两个项目,如您在以下屏幕截图中所见(“设置 Window 大小”和“打开单独的文档查看器”)。但是我想摆脱出现在这两个项目之间的默认菜单项(四个选项卡相关的功能)。
在 buildMenuWithBuilder
中,我可以像这样删除一些项目(子菜单):
[builder removeMenuForIdentifier:UIMenuMinimizeAndZoom];
但是没有defined identifier包含选项卡功能的子菜单。更重要的是,当 buildMenuWithBuilder
运行时它还不存在。如果我将此代码放在该方法的末尾...
UIMenu *test = [builder menuForIdentifier:UIMenuWindow];
NSArray *test2 = [test children];
...然后 test2 只包含两个默认菜单,UIMenuMinimizeAndZoom
和 UIMenuBringAllToFront
,加上我的自定义菜单。所以即使我有它的标识符,我怀疑在这里删除它也没有任何效果。
更奇怪的是,它出现在我的两个自定义菜单之间,即使我使用 insertChildMenu:atStartOfMenuForIdentifier:
一个接一个地添加它们。
最后,我注意到当我打开第二个场景时(在新的 Mac window 中),这些选项卡选项从 Window 菜单中消失并且不会回来.似乎 macOS 最初决定这些功能可能与我的应用程序相关,但是当我打开一个场景时,它决定它们不相关并删除它们。所以我想知道是否有办法从一开始就告诉 macOS 不要包含这些菜单项?
我认为这可能与 NSWindow
属性 tabbingMode
有关,但将我的主要 window 设置为 NSWindowTabbingModeDisallowed
没有任何区别。我唯一的 Mac 开发经验是通过 Mac Catalyst,所以我不知道还能尝试什么。
我想如果你完全禁用标签,它们就会消失。这有点hack,因为你需要调用AppKit代码,但是苹果工程师给了我:
Class _nswindow = NSClassFromString(@"NSWindow");
[_nswindow setAllowsAutomaticWindowTabbing:NO];
我正在自定义 Mac Catalyst 应用程序中的菜单。我添加了两个项目,如您在以下屏幕截图中所见(“设置 Window 大小”和“打开单独的文档查看器”)。但是我想摆脱出现在这两个项目之间的默认菜单项(四个选项卡相关的功能)。
在 buildMenuWithBuilder
中,我可以像这样删除一些项目(子菜单):
[builder removeMenuForIdentifier:UIMenuMinimizeAndZoom];
但是没有defined identifier包含选项卡功能的子菜单。更重要的是,当 buildMenuWithBuilder
运行时它还不存在。如果我将此代码放在该方法的末尾...
UIMenu *test = [builder menuForIdentifier:UIMenuWindow];
NSArray *test2 = [test children];
...然后 test2 只包含两个默认菜单,UIMenuMinimizeAndZoom
和 UIMenuBringAllToFront
,加上我的自定义菜单。所以即使我有它的标识符,我怀疑在这里删除它也没有任何效果。
更奇怪的是,它出现在我的两个自定义菜单之间,即使我使用 insertChildMenu:atStartOfMenuForIdentifier:
一个接一个地添加它们。
最后,我注意到当我打开第二个场景时(在新的 Mac window 中),这些选项卡选项从 Window 菜单中消失并且不会回来.似乎 macOS 最初决定这些功能可能与我的应用程序相关,但是当我打开一个场景时,它决定它们不相关并删除它们。所以我想知道是否有办法从一开始就告诉 macOS 不要包含这些菜单项?
我认为这可能与 NSWindow
属性 tabbingMode
有关,但将我的主要 window 设置为 NSWindowTabbingModeDisallowed
没有任何区别。我唯一的 Mac 开发经验是通过 Mac Catalyst,所以我不知道还能尝试什么。
我想如果你完全禁用标签,它们就会消失。这有点hack,因为你需要调用AppKit代码,但是苹果工程师给了我:
Class _nswindow = NSClassFromString(@"NSWindow"); [_nswindow setAllowsAutomaticWindowTabbing:NO];