Удалить функции, связанные с вкладками, из меню "Окно"?
Я настраиваю меню в своем приложении Mac Catalyst. Я добавил два элемента, как вы можете видеть на следующем снимке экрана ("Установить размер окна" и "Открыть отдельную программу просмотра документов"). Но я хочу избавиться от элементов меню по умолчанию, которые появляются между этими двумя элементами (четыре функции, связанные с вкладками).
В
buildMenuWithBuilder
, Я могу удалить некоторые элементы (дочерние меню) следующим образом:
[builder removeMenuForIdentifier:UIMenuMinimizeAndZoom];
Но не существует определенного идентификатора для дочернего меню, содержащего функции вкладок. Что еще более важно, его еще не существует, когда
buildMenuWithBuilder
бежит. Если я помещу этот код в конец этого метода...
UIMenu *test = [builder menuForIdentifier:UIMenuWindow];
NSArray *test2 = [test children];
... тогда test2 содержит только два меню по умолчанию,
UIMenuMinimizeAndZoom
и
UIMenuBringAllToFront
, плюс мои собственные меню. Так что, даже если бы у меня был его идентификатор, я подозреваю, что его удаление здесь ни к чему не приведет.
Что еще более странно, оно появляется между двумя моими настраиваемыми меню, хотя я добавляю их одно за другим с помощью
insertChildMenu:atStartOfMenuForIdentifier:
.
Наконец, я заметил, что когда я открываю вторую сцену (в новом окне Mac), эти параметры вкладки исчезают из меню "Окно" и больше не возвращаются. Кажется, что macOS изначально решает, что эти функции могут иметь отношение к моему приложению, но затем, когда я открываю сцену, она решает, что они не актуальны, и удаляет их. Поэтому мне интересно, есть ли способ с самого начала указать macOS не включать эти пункты меню?
Я думал, это может быть связано с
NSWindow
свойство
tabbingMode
, но установив в моем главном окне
NSWindowTabbingModeDisallowed
без разницы. Мой единственный опыт разработки для Mac - это Mac Catalyst, поэтому я не знаю, что еще попробовать.
1 ответ
Думаю, если полностью отключить вкладки, они исчезнут. Это немного похоже на взлом, потому что вам нужно вызвать код AppKit, но инженер Apple дал мне его:
Класс _nswindow = NSClassFromString(@"NSWindow"); [_nswindow setAllowsAutomaticWindowTabbing: НЕТ];