Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C中的鼠标坐标?_Objective C_Macos_Cocoa_Events - Fatal编程技术网

Objective-C中的鼠标坐标?

Objective-C中的鼠标坐标?,objective-c,macos,cocoa,events,Objective C,Macos,Cocoa,Events,这三种获取鼠标坐标的方法有什么区别: [NSWindow convertBaseToScreen] [NSEvent*locationInWindow] [NSWindow mouseLocationOutsideOfEventStream] 我已经检查了文档,但是描述太技术化了。有人能用更简单的术语解释这三者之间的区别吗?每个窗口和每个视图都有自己的坐标系,坐标系(除非您已经修改)从左下角的(0,0)开始,并向上和向右计数-[NSEvent locationInWindow]提供事件发生的

这三种获取鼠标坐标的方法有什么区别:

  • [NSWindow convertBaseToScreen]
  • [NSEvent*locationInWindow]
  • [NSWindow mouseLocationOutsideOfEventStream]

我已经检查了文档,但是描述太技术化了。有人能用更简单的术语解释这三者之间的区别吗?

每个窗口和每个视图都有自己的坐标系,坐标系(除非您已经修改)从左下角的(0,0)开始,并向上和向右计数<代码>-[NSEvent locationInWindow]提供事件发生的位置以及窗口的坐标系(即,(0,0)是窗口的左下角)<代码>-[NSWindow convertBaseToScreen:获取窗口坐标系中的坐标并将其转换为屏幕坐标,因此(0,0)现在表示整个屏幕的左下角


-[NSWindow mouseLocationOutsideOfEventStream]
提供鼠标当前所在的位置(在发送到的窗口的坐标系中),与任何事件无关。这很少是有用的信息。

谢谢,你的回答很完美。只有一件事-您说过mouseLocationOutsideOfEventStream返回鼠标在窗口坐标中的位置坐标。如果鼠标在窗口外会发生什么?@Farhad:所有坐标系基本上都是无限的——它们只是不都是可见的。例如,如果鼠标位于窗口底部左侧的两个像素处,则坐标为(-2,0)。