Específicamente, se comporta de forma incoherente con respecto al campo de texto de enfoque.LSUIElement se comporta de forma incoherente con activateIgnoringOtherApps
Tengo un LSUIElement que muestra un menú de estado. Dentro de ese menú hay una vista que contiene un campo de texto. El campo de texto debe ser seleccionable, no necesariamente seleccionado de manera predeterminada, sino cualquiera que sea.
Cuando se hace clic en el elemento de estado, se dispara
[NSApp activateIgnoringOtherApps:YES];
Y funciona, aproximadamente la mitad del tiempo. * La otra mitad del menú de estado parece considerarse a sí misma "en el fondo" y no va a dejar me enfoco en el campo de texto incluso haciendo clic en él. (Sé que el disparador de clic de elemento de estado está disparando b/c hay un NSLog en él.)
¿Esto es un error en la forma en que Apple maneja estos elementos de estado, o estoy manejando mal activateIgnoringOtherApps?
* De hecho, parece fallar solo la primera vez que se activa otra aplicación. Después de eso, funciona bien.
El fragmento completo:
-(void)statusItemClicked:(id)sender {
//show the popup menu associated with the status item.
[statusItem popUpStatusItemMenu:statusMenu];
//activate *after* showing the popup menu to obtain focus for the text field.
[NSApp activateIgnoringOtherApps:YES];
}
Definitivamente se está activando demasiado tarde, pero el código ya estaba estructurado como sugieres. Casi parece que el método de activación no se llama hasta que el menú de estado haya sido descartado (las pruebas de NSLog parecen confirmar esto). No entiendo por qué estaría sucediendo eso. – iconmaster
Entonces, 'activateIgnoringOtherApps:' recibe una llamada inmediatamente después de 'popUpStatusItemMenu:', o no regresa ese método hasta que se cierra el menú? Puede intentar establecer un punto de interrupción y ejecutar el depurador para ver qué sucede. – Alex
Sí, utilizando puntos de interrupción definitivamente se llama solo después de que el menú se descarta. Agregando mi código a la primera publicación, aunque se ve casi exactamente como su sugerencia. – iconmaster