2012-04-08 18 views
1

ich eine NSEvent und wollen erkennen, wenn ein rect geklickt wird, so ist dies der Code, den ich habe:Mausereignis für NSRect

- (void)mouseDown:(NSEvent *)event; 
{ 
    NSPoint clickedPoint = [event locationInWindow]; 
    //perform code for clickedPoint  
} 

Statt locationInWindow verwenden wie kann ich eine rect oder im Hinblick auf eine NSPoint konvertieren so dass es überprüft, ob ich die rect angeklickt habe? Vielen Dank!

Antwort

3

Zunächst überlegen Sie, ob Sie wirklich überschreiben wollen mouseDown: oder ob das Überschreiben mouseUp: eine bessere Option sein könnte. Wenn dieser Klick ähnlich wie das Klicken auf eine Schaltfläche ist, ist es im Allgemeinen eine bessere Idee, mouseUp: anstelle von mouseDown: zu überschreiben, als mouseUp: würde dem Benutzer erlauben, "ihre Meinung zu ändern", indem Sie die Maus aus der Taste ziehen, bevor Sie loslassen Maus.

NSEventlocationInWindow gibt die Position des Ereignisses in den Koordinaten des Basisfensters an. Zu konvertieren, die Lage auf den lokalen Sicht-Koordinatensystem, können Sie NSView ‚s convertPoint:fromView: wie im folgenden Beispiel:

- (void)mouseDown:(NSEvent *)event { 
    NSPoint eventLocation = [event locationInWindow]; 
    NSPoint location = [self convertPoint:eventLocation fromView:nil]; 
    // handle the logic of what to do given the point 
} 

Siehe Cocoa Event-Handling Guide: Getting the Location of an Event für weitere Informationen.

Verwandte Themen