2013-05-18 1 views
12

Я хотел бы сделать что-то вроде этого: NSAlert
enter image description hereКак сделать вторую кнопку NSAlert кнопкой возврата?

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

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

Я хочу сосредоточиться на кнопку «Отмена». Есть идеи? Благодаря!

+0

Вы можете быть заинтересованы в этом какао-Dev нить : [Правильная кнопка для кнопки по умолчанию?] (Http://www.cocoabuilder.com/archive/cocoa/96603-making-the-correct-button-the-default-button.html) –

ответ

17

Чтобы изменить ключевые эквиваленты для 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

+0

работал отлично! Большое спасибо! –

+0

Правая кнопка («Disconnect») находится в индексе 0. Его ключ «\ r», т.е. возврат, а не ESC. Я могу ошибаться? – LShi