2010-06-24 17 views
7

Sto facendo un'applicazione che l'utente dovrà interagire con una finestra e quando hanno quella finestra configurata nel modo in cui vogliono, passano a un'applicazione diversa, quindi la mia applicazione iniziare a fare altre cose che ho definito in un metodoRilevare se la finestra è una finestra chiave nel cacao

dire per un programma di esempio quando la finestra principale è attiva contiene un'etichetta che dice "sono concentrato" e quando la persona fa clic sul desktop o su un'altra finestra/applicazione quindi l'etichetta leggerà "non sono focalizzato".

Grazie

risposta

9

Questo non è lo stesso della finestra chiave. Finestra chiave significa che riceverete eventi di input per la vostra applicazione. Quello che vuoi sapere è se la tua applicazione è in primo piano. Quello che stai cercando sono le notifiche NSApplicationNSApplicationDidBecomeActiveNotification e NSApplicationDidResignActiveNotification. Osserva quelli da scoprire quando la tua applicazione è o meno in primo piano. I delegati dell'applicazione applicationDidBecomeActive: e applicationDidResignActive: verranno richiamati automaticamente su questi eventi.

+0

+1 per una risposta migliore della mia. – robinjam

+0

Grazie per quello che stavo lavorando! ora se solo potessi ottenere il codice all'interno del metodo per funzionare correttamente – Zanok

+2

Zanok: Vale la pena chiarire che le finestre sono separate dalle applicazioni in Mac OS X. Un'applicazione può avere e ha più finestre. Devi decidere se ti interessa la finestra attiva (al contrario delle altre finestre dell'applicazione, tra cui il pannello Informazioni, il pannello Font, il pannello Colore e forse il pannello Preferenze) o l'applicazione attiva (diversamente da un'altra applicazione). –

11

[NSWindow isKeyWindow] potrebbe essere quello che stai cercando.

Indica se la finestra è la finestra di chiavi dell'applicazione.

- (BOOL) isKeyWindow

Return Value SI se la finestra è la finestra chiave per l'applicazione; altrimenti, NO.

Se si desidera rilevare quando la finestra diventa chiave, o quando si smette di essere chiave, controllare le notifiche NSWindowDidBecomeKeyNotification e NSWindowDidResignKeyNotification.

Problemi correlati