【问题标题】:mouseDown event in a custom view does not show correct coordinates of the click自定义视图中的 mouseDown 事件未显示正确的单击坐标
【发布时间】:2011-12-13 11:40:58
【问题描述】:

我有一个自定义视图类,它接收鼠标事件。我没有得到正确的 mouseDown 或 mouseUp 事件坐标。无论我在视图中的哪个位置单击,我都会得到相同的错误坐标。

这是我的自定义 NSView 类中的功能

- (void)mouseDown:(NSEvent *)theEvent
{
    NSPoint coordinateInBaseWindow = theEvent.locationInWindow;
    
    NSPoint coordinateInView = [self convertPoint:coordinateInBaseWindow fromView:nil];
    NSLog(@"left mouse down (x,y) =(%f,%f)", coordinateInView.x, coordinateInView.y);
}

我有一个类似的 mouseUp 事件处理程序。

现在输出总是

鼠标左键向下 (x,y) =(0.000000,-1.996910)

鼠标左移 (x,y) =(0.000000,0.000000)

无论我在视图内点击什么位置,鼠标左下的坐标始终是 (0.000000,-1.996910),鼠标左上的坐标始终是 (0.000000,0.000000)。

  1. 我做错了什么?为什么我无法获取鼠标点击事件的正确坐标?
  2. mouseDown 和 mouseUp 一起单击。 mouseDown 和 mouseUp 的坐标不应该相等吗?为什么在这种情况下它们会有所不同?

编辑 1:

正如omz 指出的那样,我应该使用convertPoint:fromView: 但这也没有解决问题。我仍然得到相同的坐标。

编辑 2: 我在 NSLog 中的格式说明符不正确,这给了我完全错误的结果。

【问题讨论】:

    标签: objective-c cocoa nsview


    【解决方案1】:

    要转换 来自 窗口坐标,您必须使用 convertPoint:fromView:nil 作为视图参数。你的转化结果正好相反。

    【讨论】:

    • 我已经修复了代码,但仍然得到相同的结果。 (0.000000,-1.996910)(0.000000,0.000000).
    • 您的(编辑的)代码在这里可以正常工作。您的代码中是否还有其他可能影响结果的内容?
    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2023-04-05
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多