- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当更改停靠位置时,Cocoa 会触发 NSApplicationDidChangeScreenParametersNotification:
问题在于Apple Docs ,仅在以下情况下才应引发
Posted when the configuration of the displays attached to the computer is changed. The configuration change can be made either programmatically or when the user changes settings in the Displays control panel. The notification object is sharedApplication. This notification does not contain a userInfo dictionary.
因此,如果您想在连接新显示器时更新应用程序窗口(例如更改/移动某些 HUD 窗口的框架等),您将在扩展坞中收到一条虚假通知。此外,此通知没有附加 userInfo 字典,因此我没有机会检查扩展坞或新的显示 Controller 是否已存在。
那么如何处理呢?
一个可能的解决方案是在通知 si 触发时检查 [NSScreen mainScreen] 大小。如果此 NSSize 发生变化,则该通知来自连接的新显示器,而不是来自扩展坞:
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
(不包括 Dock 占用的空间)取决于 Dock 的位置。
因此,如果主屏幕的 visibleFrame
发生变化,您可以确定该通知是 Dock 移动的结果。
关于Cocoa Dock 触发 NSApplicationDidChangeScreenParametersNotification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901826/
我制作了一个可以更改 OSX 垃圾箱图标的应用程序。但是,在替换 .../CoreServices/Dock.app/Resources 中的图标 .png 文件后,在垃圾桶更改状态(fx.empty
有什么方法可以检测用户何时将鼠标悬停在停靠栏上的任何图标上吗?此外,是否有任何方法可以检测用户何时单击了 Dock 上的任何图标? 必须有一种检测悬停的方法,因为 hyperdock 和 dockvi
我正在使用delphi xe2 with update 4,操作系统为Win7,我想为我的学期考试构建一个允许对接表单的应用程序。因为我是一名学生,所以我买不起任何对接组件。因此,我开始通过查看 JV
如果您在表单上创建一个面板并将其设置为 Dock=Top,然后放下另一个面板并设置其 Dock=Fill,它可能会填满整个表单,而忽略第一个面板。更改 Tab 键顺序没有任何作用。 最佳答案 停靠布局
我正在尝试在 Dock 中为我的 swift 应用程序创建一个自定义的 Dock 菜单,这样当用户在我的应用程序启动后右键单击我的应用程序的 Dock 磁贴时,除了默认的 Dock 菜单项外,它还会显
我在 Delphi 7 中使用停靠 (VCL)。在我的主窗体中,停靠了另外两个窗体:一个垂直位于左边缘,一个水平位于底部边缘。 问题:停靠在底部边缘的表单占据了表单的整个宽度,限制了停靠在左边缘的表单
我遇到了一个有趣的问题。窗口漂浮在 NSScreenSaverWindowLevel 或类似级别的 Dock 上,如果您将鼠标悬停在该窗口上,即使 Dock 被窗口覆盖,Dock 仍会对鼠标使用rea
当 OS X 扩展坞显示时,它会“保留”一些屏幕区域,并防止最大化的窗口在最大化时移至扩展坞后面。如何让我自己的 Cocoa 应用程序执行相同的操作? 最佳答案 窗口的“最大化区域”基于屏幕的visi
我正在增加 NSWindow 的高度,但如果窗口位于屏幕下方太远,则窗口的高度会增加并延伸到 Dock 下方。我想防止这种情况发生。 当我研究这个时,我偶然发现了 this question这说明了相
我正在尝试创建一个按钮并使用布局管理器将按钮停靠到面板的右侧,但出现以下错误: Exception in thread "main" java.lang.IllegalArgumentExceptio
我有一个应用程序需要重新启动停靠应用程序。我已经用 Apple Script 尝试过这个: var errorDict: NSDictionary? = nil let appleScript = N
在 Windows 上,我正在尝试创建具有透明 DOCKWIDGETS 的 Qt 应用程序,其中 dock widget 的背景在 float 时是透明的。所以我们可以通过dock widget来查看
我正在使用 AvalonDock 2.0 作为选项卡控件管理器,但是我还没有找到允许多行选项卡(需要时)的方法,或者显示后台隐藏选项卡的方法。 多行tab可以通过模板或者样式实现吗?还是我错过了一些我
要删除 Dock 中的应用程序图标,我使用以下代码: ProcessSerialNumber psn = { 0, kCurrentProcess }; TransformProcessType(&p
我正在编写一个 Cocoa 应用程序,该应用程序需要在其 Dock 图标上接受已安装卷的滴落。它不是基于文档的;我打算将每个卷分派(dispatch)到 application:openFiles 中
几周前我为 Mac 创建了一个状态栏应用程序。但是,每当我运行该应用程序时,停靠栏图标都会与状态栏中的项目一起单独显示。有没有办法阻止应用程序出现在 Dock 中? 最佳答案 我无法写评论,但对于 @
当更改停靠位置时,Cocoa 会触发 NSApplicationDidChangeScreenParametersNotification: 问题在于Apple Docs ,仅在以下情况下才应引发 P
我的 Cocoa 应用程序支持将文件拖放到其 Dock 图标上,但我希望根据是否按住修饰键(Command、Option 等)来实现不同的行为。 我尝试检查 currentEvent 的 modifi
我正在浏览文档以查找如何允许放置在停靠栏图标上。据我所知,建议您使用 LSItemContentTypes,因为 CFBundleTypeOSTypes 已弃用。但是,我无法让 LSItemConte
我正在创建一个应用程序,我想让用户能够在运行时显示或隐藏停靠图标。我有一个带有复选框的首选项窗口,用于设置用户默认值,这会使用 KVO 触发以下代码: if (!hideDockIcon) {
我是一名优秀的程序员,十分优秀!