Как сделать вторую кнопку NSAlert кнопкой возврата?

Я хотел бы сделать что-то вроде этого NSAlert:
enter image description here

Как вы можете видеть, кнопка "возврат" является второй. Как я могу это сделать?
Вот пример кода, который я использую для создания моего NSAlert, но первая кнопка получает фокус:

NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Are you sure you want to disconnect?"];
[alert addButtonWithTitle:@"Disconnect"];
[alert addButtonWithTitle:@"Cancel"];
[alert runModal];

Я хочу сфокусировать кнопку "Отмена". Есть идеи? Спасибо!

Ответ 1

Чтобы изменить эквиваленты ключей для элементов NSButton внутри объекта NSAlert, вам придется напрямую обращаться к кнопкам (после создания и до -runModal) и изменять эквиваленты ключей с помощью -setKeyEquivalent: метод.

Например, чтобы вернуть значение Disconnect в ESC и Cancel, вы должны сделать следующее:

NSArray *buttons = [alert buttons];
// note: rightmost button is index 0
[[buttons objectAtIndex:1] setKeyEquivalent: @"\033"];
[[buttons objectAtIndex:0] setKeyEquivalent:@"\r"];

перед вызовом -runModal