查找包含鼠标指针的显示器或屏幕 - swift、macos

Aᴄʜ*_*ᴀɪʟ 6 macos mouse multiple-monitors screen swift

我想找出鼠标在哪个显示器上,以便我可以在该显示器上创建一个窗口。

这与哪个是主屏幕不同,因为NSScreen.main返回其中包含活动窗口的哪个屏幕(一个简单的方法是判断哪个监视器的菜单栏是不透明的,其他的会稍微变暗)。

据我所知,没有直接的方法可以得到这个?

Aᴄʜ*_*ᴀɪʟ 13

自从我找到答案以来回答我自己的问题 - 这可能对其他人有帮助。

找到鼠标所在的屏幕/显示器并不难,但您必须遍历每个屏幕才能这样做。

斯威夫特 4

func getScreenWithMouse() -> NSScreen? {
  let mouseLocation = NSEvent.mouseLocation
  let screens = NSScreen.screens
  let screenWithMouse = (screens.first { NSMouseInRect(mouseLocation, $0.frame, false) })

  return screenWithMouse
}
Run Code Online (Sandbox Code Playgroud)

目标 C

在 Objective-C 中获得相同结果的类似方法是:

NSPoint mouseLoc = [NSEvent mouseLocation];
NSEnumerator *screenEnum = [[NSScreen screens] objectEnumerator];
NSScreen screen;
while ((screen = [screenEnum nextObject]) && !NSMouseInRect(mouseLoc, 
                                                           [screen frame], NO));
Run Code Online (Sandbox Code Playgroud)