NSRect的鼠标事件

时间:2012-04-08 01:19:46

标签: objective-c xcode cocoa

我有一个NSEvent,想要检测何时点击一个rect,这就是我的代码:

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

如何将rect或视图转换为NSPoint而不是使用locationInWindow,以便检查我是否单击了rect?谢谢!

1 个答案:

答案 0 :(得分:3)

首先,请考虑您是否确实要覆盖mouseDown:,或者覆盖mouseUp:是否是更好的选择。如果此次点击类似于点击按钮,则通常最好覆盖mouseUp:而不是mouseDown:,因为mouseUp:会允许用户通过拖动“改变主意”在放开鼠标之前将鼠标移出按钮的矩形。

NSEvent的{​​{1}}在基本窗口的坐标中给出了事件的位置。要将该位置转换为视图的本地坐标系,您可以使用locationInWindow的{​​{3}},如下所示:

NSView

有关详细信息,请参阅convertPoint:fromView: