2011-12-13 78 views
2

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

这是我在我的自定义的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. 鼠标按下和MouseUp共同打造一个点击。 mouseDown和mouseUp的坐标不应该相等吗?为什么他们在这种情况下不同?

编辑1:

由于omz指出,我应该用convertPoint:fromView:但是这也没有解决问题。我仍然获得相同的坐标。

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

回答

4

从窗口转换坐标,你必须使用convertPoint:fromView:nil作为视图参数。你的转换恰恰相反。

+0

我有固定的代码,但我仍然得到同样的结果。 '(0.000000,-1.996910)'和'(0.000000,0.000000)'。 –

+0

你的(编辑的)代码在这里工作得很好。你的代码中可能会影响结果的其他任何内容? – omz