1

我有一个 NSEvent 并想检测何时单击矩形,所以这是我拥有的代码:

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

除了使用 locationInWindow 之外,我如何将矩形或视图转换为 NSPoint 以便它检查我是否单击了矩形?谢谢!

4

1 回答 1

3

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

NSEvent'slocationInWindow给出事件在基本窗口坐标中的位置。要将该位置转换为视图的本地坐标系,可以使用NSView' 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 事件处理指南:获取事件的位置

于 2012-04-08T01:37:09.197 回答