2011-08-16 23 views
8

C'è un modo per verificare se un NSWindow è visibile o no? Voglio visualizzare un controller di fogli una volta che la prima finestra della mia app è diventata visibile (l'animazione su 10.7 è terminata e l'utente può vedere la finestra!). Se mostro solo il foglio in windowDidLoad, si ottiene un'animazione dall'aspetto stupido (foglio che si apre, finestra che spunta dal retro). So che NSWindowDelegate fornisce due metodi che vengono richiamati quando una finestra diventa la finestra chiave o la finestra principale, tuttavia, ciò non significa che la finestra sia già completamente visibile in quel momento. Questo è ancora più evidente su Lion, dove le finestre tendono a comparire con questa stupida animazione.Come verificare se una NSWindow è visibile

+0

ho pensato che avevo letto su alcuni di notifica quando la finestra finito animando sullo schermo, ma ora non riesco a trovarlo ... – jtbandes

risposta

24

Vorrei andare per qualcosa di simile a questo:

if ([myWindow isVisible]) { 
    // Do stuff 
} 

O un osservatore per questo percorso chiave per ricevere una notifica quando si verifica il cambiamento.

+0

Immagino che per me sia tempo di dormire un po ', ho cercato la documentazione NSWindow per circa 30 minuti cercando una tale funzione ed ero sicuro al 100% che qualcosa del genere non funzionasse esiste Molte grazie! – JustSid

+3

@JustSid - Conosco la sensazione, il problema su un problema raramente aiuta. Una pausa e uno sguardo fresco il giorno dopo spesso fanno :). – PeyloW

1

Per quello che vale, è anche possibile associare alla proprietà window.visible. Xcode 4 potrebbe lamentarsi, dicendo che non è una proprietà associabile, ma funzionerà.

Questo può essere utile se si tenta di abilitare/disabilitare Mostra/nascondi NSStatusItem in base al fatto che la finestra sia visibile, così come altri approcci.

cioè in Interface Builder:

  • Bind a: App Delegate
  • Modello Percorso chiave: self.window.visible
Problemi correlati