2011-09-18 48 views
8

Puedo usar [NSEvent mouseLocation] para obtener la ubicación del cursor, pero esto me da las coordenadas de la pantalla. ¿Cómo obtengo las coordenadas del cursor relativas a la vista, cuando está en ella? Busqué en la documentación de Apple y no pude encontrar una respuesta.¿Cómo obtener la posición del cursor relativa a la ventana en Mac OS X?

Si hace una diferencia, querré recuperar continuamente la posición del mouse, ya que se usará en cada actualización de cuadro.

Respuesta

7
- (void)mouseMoved:(NSEvent *)event 
{ 
    NSPoint locationInView = [self convertPoint:[event locationInWindow] 
             fromView:nil]; 
} 

También asegúrese de que ha habilitado eventos mouseMoved:

[window setAcceptsMouseMovedEvents:YES]; 
+0

'theEvent' debería ser' event', creo. – smacdonald

+1

Editado, gracias. – omz

7
NSPoint myPoint = 
    [myView convertPoint:[myWindow convertScreenToBase:[NSEvent mouseLocation]] 
       fromView:nil]; 
+0

'convertScreenToBase' está en desuso – rraallvv

9

Para completar, hay una manera directa para obtener la posición del ratón en la ventana de coordenadas (utilizando NSWindow). Dependiendo del diseño de su ventana, esto puede ser equivalente a las coordenadas de la vista.

NSWindow *myWindow; 
NSPoint mousePos; 
... 
mousePos = [myWindow mouseLocationOutsideOfEventStream]; 

Las coordenadas devueltos son en la ventana de co-ords, así que si el ratón se deja de/por debajo de la ventana, entonces se devuelve un valor negativo. Si el mouse está a la derecha de/encima de la ventana, la coordenada excederá el tamaño de la ventana.

Cuestiones relacionadas