swift - 查找哪个监视器或屏幕包含鼠标指针 - swift、macos

标签 swift macos screen mouse multiple-monitors

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

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

据我所知,没有直接的方法来获取它?

最佳答案

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

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

swift 4

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

  return screenWithMouse
}

objective-c

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

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

关于swift - 查找哪个监视器或屏幕包含鼠标指针 - swift、macos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49624486/

相关文章:

ios - swift 3.0 TableViewCell : Saving the Status of a Button and Having it Persist

c - 通过引用 C 中的函数传递数组

android - 在android中以编程方式部分关闭屏幕

android - 适用于所有屏幕尺寸的 Appwidget 最大宽度

ios - 在 Swift 3 中从 UIPageViewController 中删除黑边

ios - 在 Objective C 项目中使用 Swift Pod

ios - 使用约束对齐

ios - 什么时候创建新的 NSURLSession?

ios - OSX : Auto layout/constraints not displaying content

javascript - 检测显示器的物理尺寸