2011-10-12 15 views
8

Tengo una aplicación que usa un NSStatusItem. En pantallas pequeñas, no hay mucho espacio en la barra de estado. Cuando un usuario cambia a una aplicación con muchos elementos de menú, mi elemento de estado se oculta. ¿Hay alguna manera de recibir notificaciones sobre esto?informándome cuando NSStatusItem está oculto

lo que he intentado hasta ahora:

  • que comprueba si se dispara cualquier NSNotification: No
  • que comprueba si el statusView se retira de la jerarquía de vistas: No
  • yo nos registramos isHiddenOrHasHiddenAncestor: No

Aquí está el código que uso para crear el elemento de estado.

self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 
MyStatusView *maView = [[[MyStatusView alloc] initWithFrame:CGRectMake(0, 0, 50, 22)] autorelease]; 
[statusItem setTitle:@"Ma Status Item"]; 
[statusItem setView:maView]; 
+0

¿Puedes probar si su propiedad view.center cambia a medida que se mueve fuera de la pantalla? Es posible que pueda agregar la notificación de KVO a la propiedad del centro para establecer un tipo de devolución de llamada, pero no sé si eso funcionaría para un statusItem. – Suz

+0

También tengo un temporizador en ejecución que registra los límites relativos a la ventana. No cambia ... Parece que maView está en su propia ventana (NSWindow> NSNextStepFrame> maView). Trataremos de ver si esto se mueve fuera de la pantalla. – stigi

+0

Los límites de ventana también están todavía en pantalla. La ventana podría estar superpuesta por otra cosa. No sé cómo comprobar esto ... – stigi

Respuesta

1

Es bastante inteligente de que se den cuenta que cuando un elemento de estado está oculta, su ventana se puede mover a un segundo plano.

Ahora la notificación que estás buscando es: NSWindowDidResignKeyNotification (o NSWindowDidResignMainNotification dependiendo del contexto de su aplicación)

Para una explicación clara sobre la diferencia entre una ventana de llave y una ventana principal, consulte this .

+0

Esta respuesta no funciona, -1, no hay notificaciones de ese tipo se envían cuando un NSStatusItem se oculta – Vervious

+0

-1: Me segunda @Vervious - esta respuesta es peor que inútil, que me hizo perder el tiempo tratando de hacerlo trabajo. – ArtOfWarfare

Cuestiones relacionadas