我有一个全球应用程序,报告有关当前文本框的信息。我已经设置好了,所以每次点击鼠标,我就运行:
NSLog(@"Screen:%f,%f", [[NSScreen mainScreen] frame].size.width, [[NSScreen mainScreen] frame].size.height);但是,当我将键盘焦点放在一个屏幕上的文本框中,然后单击该文本框中的鼠标(重复),[[NSScreen mainScreen] frame]通常会报告错误的屏幕尺寸!它给了我另一个显示器的尺寸。
苹果公司的文档上说:
主屏幕不一定与包含菜单栏的屏幕相同,或者其原点为(0,0)。主屏幕是指包含当前正在接收键盘事件的窗口的屏幕。它是主屏幕,因为它是最有可能与用户交互的屏幕。
这说明带有键盘焦点的屏幕总是主屏幕。我给它键盘焦点和鼠标焦点。那么为什么我会有50%的时间得到另一个屏幕呢?
这是NSScreen mainScreen中的一个bug吗?我一定要强制重新计算吗?还有其他方法来获取具有键盘焦点的显示器的尺寸吗?
发布于 2012-02-25 09:33:29
这句话说,键盘焦点的屏幕总是主屏幕。我给它键盘焦点和鼠标焦点。那么为什么我会有50%的时间得到另一个屏幕呢?
我知道这是nit选择,但从技术上讲,主屏幕是包含具有关键焦点的窗口的屏幕。因此,如果一个窗口跨越两个屏幕,其中有一个文本字段,而窗口的原点在屏幕1上,但是文本字段位于屏幕2上的窗口上,文本字段是聚焦的,主屏幕仍然是屏幕1。
发布于 2012-03-26 19:29:29
要获得包含鼠标的屏幕:
http://www.cocoabuilder.com/archive/cocoa/104529-current-mouse-screen.html
https://stackoverflow.com/questions/9439992
复制相似问题