鼠标事件位置似乎不正确

时间:2010-07-14 13:26:39

标签: cocoa

我有一个简单的测试应用程序,其自定义视图(在Interface Builder中设置)的原点为(20,20)。当我在视图的最左下角获得鼠标事件时,事件的位置报告为(20,21),转换点报告为(0,1)。我正在使用小精灵来确保我在左下角点击右边。 (如果我向下移动一个像素,我什么也得不到,表明我在视线之外。)

这是mouseDown代码:

- (void)mouseDown:(NSEvent *)e
{
    NSPoint pt = [e locationInWindow];
    NSLog(@"Location in Window: %.0f, %.0f", pt.x, pt.y);

    pt = [self convertPoint:pt fromView:nil];

    NSLog(@"Converted Point: %.0f, %.0f", pt.x, pt.y);
}

任何人都可以解释为什么y位置似乎被一个人关闭了吗?

2 个答案:

答案 0 :(得分:3)

这是正确的行为。来自Cocoa Drawing Guide

  

重要事项: Cocoa事件对象返回的y坐标值   基于1而不是基于0。因此,一个   鼠标点击左下角   一个窗口或视图会产生   Cocoa中的点(0,1)而不是(0,0)。   只有y坐标是从1开始的。

答案 1 :(得分:0)

Fencepost error?在您的代码,库或您对库的使用?在进行浮点数据的整数像素报告时舍入错误?