我有一个 NSEvent 并想检测何时单击矩形,所以这是我拥有的代码:
- (void)mouseDown:(NSEvent *)event;
{
NSPoint clickedPoint = [event locationInWindow];
//perform code for clickedPoint
}
除了使用 locationInWindow 之外,我如何将矩形或视图转换为 NSPoint 以便它检查我是否单击了矩形?谢谢!
我有一个 NSEvent 并想检测何时单击矩形,所以这是我拥有的代码:
- (void)mouseDown:(NSEvent *)event;
{
NSPoint clickedPoint = [event locationInWindow];
//perform code for clickedPoint
}
除了使用 locationInWindow 之外,我如何将矩形或视图转换为 NSPoint 以便它检查我是否单击了矩形?谢谢!
首先,考虑您是否真的要覆盖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 事件处理指南:获取事件的位置。