gpt4 book ai didi

ios - 使用 [NSEvent mouseLocation] 的错误位置

转载 作者:可可西里 更新时间:2023-11-01 05:31:52 26 4
gpt4 key购买 nike

我为 Mac 制作了一个 iphone 远程鼠标 Controller 应用程序:iPhone 应用程序将坐标值发送到 Mac,然后 Mac 处理鼠标位置值。

要获取 Mac 上的当前鼠标位置,接收器调用 [NSEvent mouseLocation]。

x 的值总是正确的,但 y 的值是错误的。

我使用了一个“while”循环来处理这个事件。

while (1) {
mouseLoc = [NSEvent mouseLocation];

while ((msgLength = recv(clientSocket, buffer, sizeof(buffer), 0)) != 0) {
CGPoint temp;
temp.x = mouseLoc.x;
temp.y = mouseLoc.y; // wrong value
........

每个循环周期的 y 值都不同。例如第一次循环时y值为400,下次循环时y值为500;然后在下一个循环中 y 再次为 400。

鼠标指针不断上下移动,两个不同的y值之和总是900。(我想是因为屏幕分辨率是1440 * 900。)

我不知道为什么会这样,怎么办,怎么调试。

最佳答案

这里有一种方法可以获得正确的 Y 值:

while (1) {
mouseLoc = [NSEvent mouseLocation];
NSRect screenRect = [[NSScreen mainScreen] frame];
NSInteger height = screenRect.size.height;

while ((msgLength = recv(clientSocket, buffer, sizeof(buffer), 0)) != 0) {
CGPoint temp;
temp.x = mouseLoc.x;
temp.y = height - mouseLoc.y; // wrong value
........

基本上,我已经抓取了屏幕高度:

NSRect screenRect = [[NSScreen mainScreen] frame];
NSInteger height = screenRect.size.height;

然后我获取屏幕高度并从中减去 mouseLocation 的 Y 坐标,因为 mouseLocation 返回底部/左侧的坐标,这将为您提供顶部的 Y 坐标。

temp.y = height - mouseLoc.y; // right value

这在我的应用程序中可以控制鼠标位置。

关于ios - 使用 [NSEvent mouseLocation] 的错误位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com