2010-04-24 10 views
5

Sto costruendo un'applicazione Cocoa che viene eseguito come un elemento nella barra di stato. Questa applicazione ha una finestra Informazioni e un elemento per attivare quella finestra, utilizzando il meccanismo standard di Cocoa per farlo (-[NSApplication orderFrontStandardAboutPanel:]). Naturalmente questo è tutto agganciato automaticamente.Come faccio a fare in modo che la finestra About sia la finestra più in primo piano in un'applicazione Cocoa senza interfaccia utente?

E le grandi opere, tranne che per una cosa: a differenza di più di finestre, si presenta sotto tutte le altre finestre, piuttosto che sulla parte superiore. Credo che questo sia dovuto al fatto che l'applicazione non ha un'interfaccia utente, quindi tutte le sue finestre sono automaticamente al di sotto delle altre finestre. C'è un modo in cui posso agganciare il meccanismo NSApplication per visualizzare la finestra About in modo da poterla inviare in primo piano e farla rispondere a ⌘-W in modo che possa essere chiusa dalla tastiera? Ho cercato i documenti per NSApplication, ma non c'è modo di ottenere un riferimento alla finestra About che posso vedere in modo che io possa farlo apparire sopra.

risposta

6

C'è un modo per collegare il meccanismo di NSA per visualizzare la finestra Informazioni in modo da poterla inviare in primo piano?

Questo è ciò che fa orderFrontStandardAboutPanel:.

Funziona alla grande tranne che per una cosa: a differenza della maggior parte delle finestre di Windows, viene visualizzata al di sotto di tutte le altre finestre, anziché in alto. Credo che questo sia dovuto al fatto che l'applicazione non ha un'interfaccia utente, quindi tutte le sue finestre sono automaticamente al di sotto di altre finestre [applicazioni].

Prova bringing your application to the front con [NSApp activateIgnoringOtherApps:YES].

Si noti che il modo in cui si rende l'applicazione "non ha un'interfaccia utente" è importante: se si sta utilizzando LSUIElement, funzionerà, mentre LSBackgroundOnly significa in modo rigoroso sfondo solo.

+0

Grazie. C'è un modo per far sì che la finestra risponda all'evento tastiera ⌘-W, quindi può essere chiuso dalla tastiera? La finestra viene visualizzata in primo piano ora, ma premendo ⌘-W non la chiude (invece, viene visualizzato solo il suono di avviso del sistema quando una scorciatoia da tastiera non è valida). – mipadi

+0

Hai un menu principale? Anche se normalmente non sarà visibile, dovresti comunque avere un menu principale per gestire scorciatoie da tastiera come ⌘W, ⌘Z, ⌘C, ⌘V, ecc. –

+0

Non ne ho avuto uno, ma ne ho aggiunto uno. Ha il solito oggetto "Chiudi" con la scorciatoia da tastiera corretta, ma non funziona ancora. – mipadi

Problemi correlati