NSAlert: сделать вторую кнопку и кнопкой по умолчанию, и кнопкой отмены - PullRequest
0 голосов
/ 17 ноября 2018

Оригинальные HIG от Apple (теперь, к сожалению, исчезли с веб-сайта) заявили, что:

Самая правая кнопка в диалоговом окне, кнопка действия, это кнопка, подтверждающая текст сообщения предупреждения.Кнопка действия обычно, но не всегда, кнопка по умолчанию

В моем случае у меня есть некоторые деструктивные операции (такие как стирание диска), которые требуют «безопасных» диалогов подтверждения, например:

Наихудшим вариантом будет создание диалога, в котором крайняя правая кнопка станет кнопкой «не стирать», а левая от нее,обычно кнопка «Отмена» становится кнопкой «стирания», потому что это может легко привести к катастрофе ( случилось со мной с диалогом, сделанным Microsoft один раз), потому что люди обучены нажимать второйкнопка, когда они хотят отменить операцию.

Итак, мне нужно, чтобы левая (отмена) кнопка стала одновременно кнопкой по умолчанию, а также реагировала на клавиши Return, Esc и cmd-period.

Чтобы установить его по умолчанию и также реагировать на клавишу Return, мне просто нужно установить для keyEquivalent первой кнопки пустую строку, а для второй кнопки - "\ r".

Но какЯ такжесделать предупреждение отменить, когда Esc или CMD-.набраны?

...