Cocoa Dock激发非应用程序IDChangeScreen参数通知
更改停靠位置时,Cocoa正在触发NSApplicationIDChangeScreen参数提示: 问题是,至于,只有在 在连接到计算机的显示器配置时发布 改变了。配置更改可以通过以下两种方式进行: 以编程方式或当用户更改显示中的设置时 控制面板通知对象是sharedApplication。这 通知不包含userInfo字典 因此,如果您想在附加新显示器时更新应用程序窗口(例如,更改/移动某个HUD窗口的框架等),您将收到来自dock的假通知。 此外,此通知没有附加userInfo字典,因此我没有机会检查dock或新的显示控制器 那么如何处理呢 一种可能的解决方案是在发出通知时检查[NSScreen mainScreen]大小。 如果此NSSize更改,则该通知来自连接的新显示器,而不是来自dock:Cocoa Dock激发非应用程序IDChangeScreen参数通知,cocoa,dock,nsapplication,Cocoa,Dock,Nsapplication,更改停靠位置时,Cocoa正在触发NSApplicationIDChangeScreen参数提示: 问题是,至于,只有在 在连接到计算机的显示器配置时发布 改变了。配置更改可以通过以下两种方式进行: 以编程方式或当用户更改显示中的设置时 控制面板通知对象是sharedApplication。这 通知不包含userInfo字典 因此,如果您想在附加新显示器时更新应用程序窗口(例如,更改/移动某个HUD窗口的框架等),您将收到来自dock的假通知。 此外,此通知没有附加userInfo字典,因此我没
static NSSize mainScreenSize;
-(void)handleApplicationDidChangeScreenParameters:(NSNotification *)notification {
NSSize screenSize = [[NSScreen mainScreen] frame].size;
if( screenSize.width != mainScreenSize.width || screenSize.height != mainScreenSize.height ) { // screen size changed
mainScreenSize = [[NSScreen mainScreen] frame].size;
[myWindowController updateContent];
[[myWindow contentView] setNeedsDisplay:YES]; // update custom window
}
触发通知是因为主屏幕的
可视框架
(不包括停靠占用的空间)取决于停靠的位置
因此,如果主屏幕的
visibleFrame
发生变化,您可以确定该通知是移动坞的结果。该通知被触发,因为主屏幕的visibleFrame
(不包括坞占用的空间)取决于坞的位置
因此,如果主屏幕的visibleFrame
发生更改,您可以确定通知是由于移动了停靠点