Tengo una aplicación global que informa de nuevo sobre el campo de texto actual. He configurarlo para que cada vez que hago clic en el ratón, corro:| NSScreen mainScreen | no se actualiza cuando el foco del teclado/mouse va a otro monitor?
NSLog(@"Screen:%f,%f", [[NSScreen mainScreen] frame].size.width, [[NSScreen mainScreen] frame].size.height);
Pero cuando pongo el foco del teclado en un campo de texto, por una pantalla, a continuación, haga clic en el ratón (varias veces) en ese mismo campo de texto, el ¡[[NSScreen mainScreen] frame]
a menudo informa las dimensiones incorrectas de la pantalla! Me da las dimensiones de la otra pantalla.
Los documentos de Apple dicen:
La pantalla principal no es necesariamente la misma pantalla que muestra la barra de menú o tiene su origen en (0, 0). La pantalla principal se refiere a la pantalla que contiene la ventana que está recibiendo actualmente los eventos del teclado . Es la pantalla principal porque es con la que probablemente interactúa el usuario .
Esto dice que la pantalla con el foco del teclado es siempre la pantalla principal. Le estoy dando el enfoque del teclado y el enfoque del mouse. Entonces, ¿por qué estoy recibiendo la otra pantalla 50% del tiempo?
¿Esto es un error en [NSScreen mainScreen]? ¿Tengo que forzar un recálculo de alguna manera? ¿Hay alguna otra forma de obtener las dimensiones de la pantalla que tiene el foco del teclado?
derecho, me di cuenta de que también y lo hizo cambiar el tamaño de la ventana a un tamaño muy pequeño y lo puso en su totalidad en una sola pantalla. Todavía tiene el problema. – cksubs
Para confirmar, también puede verificar el resultado de [pantalla de la ventana]. –
¿Quiere decir [theWindowIamInteractingWith screen]? Esta es una aplicación global, la ventana pertenece a una aplicación diferente, así que no creo que tenga esa información. Si quisiste decir algo más, házmelo saber. – cksubs