Как отобразить несколько клавиш или аккордов для MenuItem на какао - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь отобразить несколько комбинаций клавиш для MenuItem в какао.Это чаще всего называют «аккордами».

Например, я хочу добавить пункт меню, который выглядит как: «Action1 Control K, F» или «MenuItem2 K, L»

Будетэто возможно в Objective-C через стандартный API?Я посмотрел вокруг, и самым близким к этому на MacOS было бы использование пользовательских представлений.Будет ли способ разрешить эту функцию?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Стандартный API-интерфейс не поддерживает обработку аккордов, поэтому он не позволяет устанавливать аккорды в качестве клавишного эквивалента, и поэтому он также не может отображать аккорд в качестве ключевого эквивалента.

Если вам нужны эти функции, вам необходимоосуществить полностью самостоятельно.Просто создайте свой собственный объект NSView и назначьте его свойству view NSMenuItem.Как задокументировано, вам придется рисовать все самостоятельно:

Элемент меню с видом не рисует свой заголовок, состояние, шрифт или другие стандартные атрибуты чертежа и полностью назначает ответственность за рисование.Посмотреть.Эквиваленты клавиш и выбор типа продолжают использовать эквивалент клавиш и заголовок как обычно.

Источник: https://developer.apple.com/documentation/appkit/nsmenuitem/1514835-view?language=objc

Является ли это нормальным NSView, заполненным подпредставлениями, созданоБудь то программно или даже загружено из файла NIB, или является ли это подклассом NSView для рисования самого себя, все эти варианты действительно будут работать.Обычно проще всего использовать файл NIB и создать свой внешний вид меню в конструкторе интерфейсов и использовать автоматическое расположение.

Однако имейте в виду, что это нарушает рекомендации Apple Human Interface.Это нарушает ожидания пользователей, поскольку все его другие приложения не предлагают ничего похожего, поскольку в macOS пункт меню имеет один эквивалент ключа или его нет.Это также нарушает возможность пользователей настраивать ключ, эквивалентный тому, как он используется для этого для всех других приложений (Системные настройки> Клавиатура> Сочетания клавиш> Сочетания клавиш приложения).

Как правило, вы не должны заменять системный стандартный пользовательский интерфейс своим собственным пользовательским интерфейсом, если у вас нет действительно веской причины для этого, так как это всегда нарушает ожидания пользователей, определенные функции системы не будут работать должным образом (например, специальные возможности) и это разрушает единый внешний вид системы.Также это нарушает автоматическую работу системы, как вы можете видеть в macOS 10.14 (Mojave), где все стандартные системные интерфейсы автоматически поддерживают темный режим, поэтому, если вы используете только стандартный пользовательский интерфейс, ваше приложение поддерживает темный режим без каких-либо изменений, но все пользовательские интерфейсы должны бытьснова настроен для темного режима.

0 голосов
/ 27 сентября 2018

Да, вам нужно использовать пользовательский вид.NSMenuItem отображает только первый символ его keyEquivalent.

...