2014-05-21 9 views
9

Mam NSView, który łapie zdarzenie mouseDown.Uzyskiwanie lokalizacji [NSEvent mouseLocation] w systemie koordynacji widoku

Dostaję koordynację kliknięciem myszy przy użyciu:

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

Jednak ta ustawia clickPoint jako lokalizacji myszy w globalnej koordynacji ekranem.

Chcę uzyskać pozycję kliknięcia we względnej koordynacji widoku - Jeśli użytkownik kliknie w dolnym lewym rogu okna, chcę, aby punkt był (0, 0) bez względu na to, gdzie znajduje się okno zawierające na ekranie.

Odpowiedz

13

Powinieneś używać locationInWindow, a nie mouseLocation. Dokumenty na stronie locationInWindow pokazują, jak przejść z tego miejsca:

NSPoint event_location = [theEvent locationInWindow]; 
NSPoint local_point = [self convertPoint:event_location fromView:nil]; 
Powiązane problemy