2011-08-16 19 views
8

¿Hay alguna manera de verificar si un NSWindow es visible o no? Quiero mostrar un controlador de hoja una vez que la primera ventana de mi aplicación se hizo visible (¡la animación en 10.7 finalizó y el usuario puede ver la ventana!). Si solo muestro la hoja en windowDidLoad, resulta en una animación estúpida (la hoja se despliega y la ventana emerge desde atrás). Sé que NSWindowDelegate proporciona dos métodos que se invocan cuando una ventana se convierte en la ventana clave o la ventana principal, sin embargo, esto no significa que la ventana ya esté completamente visible en ese momento. Esto es aún más notable en Lion, donde las ventanas tienden a aparecer con esta estúpida animación.Cómo verificar si una NSWindow está visible

+0

pensé que había leído sobre alguna notificación cuando la ventana terminada la animación en la pantalla, pero ahora no puedo encontrarlo ... – jtbandes

Respuesta

24

me gustaría ir para algo como esto:

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

O un observador para esta ruta clave para ser notificado cuando se produce el cambio.

+0

Supongo que es hora de que duerma un poco, busqué en la documentación de NSWindow durante 30 minutos buscando esa función y estaba 100% seguro de que algo como esto no hice existo ¡Muchas gracias! – JustSid

+3

@JustSid - Sé que la sensación, rechinar en un problema rara vez ayuda. Un descanso y un aspecto fresco al día siguiente a menudo hacen :). – PeyloW

1

Por lo que vale, también puede enlazar a la propiedad window.visible. Xcode 4 puede sonarte y decir que no es una propiedad vinculable, pero funcionará.

Esto puede ser útil si está intentando habilitar/deshabilitar mostrar/ocultar NSStatusItem en función de si la ventana está visible, así como de otros enfoques.

es decir, en el Interface Builder:

  • Bind to: Aplicación Delegado
  • Modelo Ruta de la clave: self.window.visible
Cuestiones relacionadas