macos - 在 View 坐标系中获取 [NSEvent 鼠标位置]

标签 macos mousedown nsevent

我有一个捕获 mouseDown 事件的 NSView。

我使用以下方法协调鼠标单击:

- (void)mouseDown:(NSEvent *)theEvent {
    NSPoint touchPoint = [NSEvent mouseLocation];
    //Rest of code
}

但是,这会将 clickPoint 设置为鼠标在全局屏幕坐标中的位置。

我想在相对 View 协调中获得点击的位置 - 如果用户在窗口的左下角点击,我希望点是 (0, 0) 无论包含窗口在屏幕上的哪个位置。

最佳答案

您应该使用 locationInWindow ,不是 mouseLocation . locationInWindow 上的文档展示如何从那里出发:

NSPoint event_location = [theEvent locationInWindow];
NSPoint local_point = [self convertPoint:event_location fromView:nil];

关于macos - 在 View 坐标系中获取 [NSEvent 鼠标位置],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23787842/

相关文章:

java - 如何在 Mac 上使用 Java 中的 ssl 证书

python - 如何使用 Python 从任何目录启动脚本

jquery - 自定义 Jquery UI 微调器

jquery - 处理 'mouseleave' 而 'mousedown'

swift - 检测 NSView 上的鼠标左键和右键单击

objective-c - 在 cocoa 屏幕上观察全局鼠标位置?

c - Mac OS/X 上的 C 程序如何得知用户双击打开了关联的文件?

macos - 开始为 Mac 制作应用程序有多容易?

javascript - Jquery mousedown/mouseup 防止点击

objective-c - 将 CGEvents 击键发送到后台应用程序