2014-05-21 23 views
9

Ho un NSView che sta rilevando un evento mouseDown.Ottenere [NSEvent mouseLocation] in visualizzazione sistema di coordinamento

che sto ricevendo il coordinamento del clic del mouse utilizzando:

- (void)mouseDown:(NSEvent *)theEvent { 
    NSPoint touchPoint = [NSEvent mouseLocation]; 
    //Rest of code 
} 

Tuttavia, questa imposta ClickPoint come la posizione del mouse nel coordinamento schermo globale.

Voglio ottenere la posizione del clic nel coordinamento della vista relativa - Se l'utente fa clic nell'angolo in basso a sinistra della finestra, voglio che il punto sia (0, 0), non importa dove si trova la finestra che lo contiene sullo schermo.

risposta

13

Si dovrebbe usare locationInWindow, non mouseLocation. I documenti su locationInWindow mostrano come andare da lì:

NSPoint event_location = [theEvent locationInWindow]; 
NSPoint local_point = [self convertPoint:event_location fromView:nil];