2012-04-08 6 views
1

У меня есть NSEvent и хочу, чтобы обнаружить, когда Прямоугольник нажат, так что это код у меня есть:Mouse Event для NSRect

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

Вместо того, чтобы использовать locationInWindow, как можно преобразовать прямоугольник или вид на NSPoint так что он проверяет, нажал ли я на прямоугольник? благодаря!

ответ

3

Прежде всего, рассмотрите вопрос о том, действительно ли вы хотите переопределить mouseDown: или может быть лучшим вариантом для mouseUp:. Если этот клик похож на что-то вроде нажатия кнопки, обычно лучше переопределить mouseUp:, а не mouseDown:, так как mouseUp: позволит пользователю «передумать», вытащив мышь из прямоугольника кнопки, прежде чем отпускать мышь.

NSEventlocationInWindow указывает местоположение события в координатах базового окна. Для того, чтобы преобразовать это место в локальной системе координат зрения, вы можете использовать NSView «s convertPoint:fromView:, как в следующем:

- (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 
} 

См Cocoa Event-Handling Guide: Getting the Location of an Event для получения дополнительной информации.