2014-05-21 11 views
9

Ich habe ein NSView, das ein mouseDown-Ereignis abfängt.Abruf von [NSEvent mouseLocation] im Ansichtskoordinationssystem

Ich erhalte die Koordination des Mausklick mit:

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

Doch dies setzt Clickpoint als Position der Maus auf der globalen Bildschirm Koordination.

Ich möchte die Position des Klicks in der relativen Ansicht Koordination erhalten - Wenn der Benutzer in der unteren linken Ecke des Fensters klickt, möchte ich den Punkt (0, 0) sein, egal wo das enthaltende Fenster ist auf dem Bildschirm.

Antwort

13

Sie sollten locationInWindow, nicht mouseLocation verwenden. Die Dokumente auf locationInWindow zeigen, wie man von dort geht:

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