2013-05-18 12 views
12

Mi piacerebbe fare qualcosa di simile NSAlert:
enter image description hereCome rendere il secondo pulsante di NSAlert il pulsante di ritorno?

Come si può vedere, il pulsante 'ritorno' è il secondo. Come posso fare questo?
Ecco un esempio del codice che uso per creare il mio NSAlert, ma il primo pulsante ottiene il focus:

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

voglio mettere a fuoco il pulsante "Annulla". Qualche idea? Grazie!

+0

Potreste essere interessati a questa discussione di cacao-dev : [Rendere il pulsante corretto il pulsante predefinito?] (Http://www.cocoabuilder.com/archive/cocoa/96603-making-the-correct-button-the-default-button.html) –

risposta

17

Per modificare gli equivalenti chiave per gli NSButton elementi all'interno dell'oggetto NSAlert, dovrete accedere ai pulsanti direttamente (dopo la creazione e prima -runModal) e cambiare gli equivalenti chiave utilizzando il metodo -setKeyEquivalent:.

Ad esempio, per impostare il Disconnect essere ESC e il Cancel per essere di ritorno, si dovrebbe effettuare le seguenti operazioni:

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

prima di chiamare -runModal

+0

ha funzionato perfettamente! Grazie mille! –

+0

Il pulsante più a destra ("Disconnect") si trova all'indice 0. La sua chiave è "\ r" vale a dire return, non ESC. Potrei sbagliarmi? – LShi

Problemi correlati