2011-09-18 14 views
8

Posso usare [NSEvent mouseLocation] per ottenere la posizione del cursore, ma questo mi dà le coordinate dello schermo. Come ottengo le coordinate del cursore relative alla vista, quando è in esso? Ho cercato la documentazione di Apple e non ho trovato una risposta.Come ottenere la posizione del cursore rispetto alla finestra in Mac OS X?

Se fa la differenza, desidero recuperare continuamente la posizione del mouse poiché verrà utilizzata in ogni aggiornamento di fotogramma.

risposta

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

Inoltre, assicurarsi di aver abilitato eventi mouseMoved:

[window setAcceptsMouseMovedEvents:YES]; 
+0

' theEvent' dovrebbe essere 'event', credo. – smacdonald

+1

Modificato, grazie. – omz

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

'convertScreenToBase' è deprecato – rraallvv

9

Per completezza, c'è un modo diretto per ottenere la posizione del mouse in coordinate della finestra (utilizzando NSWindow). A seconda del layout della finestra, questo potrebbe essere equivalente alle coordinate della vista.

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

Le coordinate restituiti siano in co-window ords, quindi se il mouse è rimasto/sotto la finestra quindi un valore negativo viene restituito. Se il mouse è a destra/sopra la finestra, la coordinata supererà la dimensione della finestra.

Problemi correlati