Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Swift 将键盘焦点放在沙箱上,获得NSScreen_Swift_Macos_Cocoa_Accessibility_Appstore Sandbox - Fatal编程技术网

Swift 将键盘焦点放在沙箱上,获得NSScreen

Swift 将键盘焦点放在沙箱上,获得NSScreen,swift,macos,cocoa,accessibility,appstore-sandbox,Swift,Macos,Cocoa,Accessibility,Appstore Sandbox,我想知道的是哪个屏幕有键盘焦点 首先,我为NSWorkspace.didActiveApplicationNotification添加了一个观察者,每当调用foo方法时,我需要确定哪个NSScreen具有键盘焦点 NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(foo), name: NSWorkspace.didActivateApplicationNotification, object:

我想知道的是哪个屏幕有键盘焦点

首先,我为
NSWorkspace.didActiveApplicationNotification添加了一个观察者,每当调用
foo
方法时,我需要确定哪个
NSScreen
具有键盘焦点

NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(foo), name: NSWorkspace.didActivateApplicationNotification, object: nil)
我从这个通知中得到的只是
NSRunningApplication
对象,但它没有告诉我哪个屏幕是焦点

在中,我找到了一个带有说明的NSScreen

返回包含带有键盘的窗口的屏幕对象 专注

这正是我想要的,但并不像我想的那样有效。它返回错误的屏幕。在头文件中,我找到了这些信息

//缓存的值,可能已过时

我尝试了可访问性,一切正常,但当启用沙盒时它不起作用,所以我无法使用它


有人知道如何使用键盘焦点获取NSScreen对象吗?

“它没有像我想的那样工作”,“它返回了错误的屏幕”;我认为你需要更具体地说明出了什么问题。屏幕没有键盘焦点,windows有-例如,窗口可以同时在多个屏幕上。@因为属性已缓存,所以extman读取
NSScreen。main
after
foo
方法调用将以过时值发生。几毫秒后,该值是正确的,但我立即需要它,不得延误。恐怕您不会得到更好的解决方案。您需要确定关键窗口;如果不是你的应用程序,你不能使用可访问性,我认为你是SOL。你试过
NSScreen
文档中提到的
Quartz Display Services
的API吗?@mschmidt是的,我试过,但我没有发现任何有用的东西。