0

我有一个我正在开发的 Cocoa 应用程序,我在主窗口中使用的NSToolbar的外观上得到了不同的结果。

具体来说,我使用搜索字段作为最后一个NSToolbarItem并且在 Snow Leopard 下它正确显示: 在此处输入图像描述

它在 Leopard 下被切割: 在此处输入图像描述

查看这两个版本,我在项目之间放置的空格似乎在 Leopard 下不受尊重。我还看到,有时在 Interface Builder 的工具栏上进行一些更新后,即使在 Snow 下,这些更改也不会反映在正在运行的应用程序中。我必须从自定义菜单中拖动默认栏才能看到它们。

更新 NSToolbar 并不总是镜像 .nib 文件中的内容的原因在于为我启用的自动保存机制,正如 NSGod 所建议的那样。

这种不当行为的原因可能是什么?是否有一些关于我应该考虑的约束(最小和最大)尺寸?随时向我指出一些文档

更新 2 有没有办法以编程方式将项目和空间引入 NSToolbar 或检查使用 Interface Builder 输入的项目和空间的一致性(在运行时)?

4

1 回答 1

1

虽然我确实记得 s 中的搜索字段有一些奇怪之处NSToolbar,但我从未见过它的右侧被切断的行为。

作为空间的NSToolbarItems 是固定的一单位空间还是灵活空间?

“我还看到,有时在 Interface Builder 的工具栏中进行一些更新后,即使在 Snow 下,这些更改也不会反映在正在运行的应用程序中。我必须从自定义菜单中拖动默认栏才能看到它们。”

您需要记住,如果您在工具栏中启用了用户自定义和自动保存行为,那么当用户明确进行更改时,它将被保存为用户默认值。如果您随后在 IB 中重新排列工具栏并运行应用程序,则保存在用户默认值中的配置可能会覆盖您在 nib 文件中指定的默认配置。

我通常做的是在测试期间,删除我的应用程序的 prefs 文件,这样更改就不会被覆盖。(FWIW,我通常使用保存在 Dock 中的应用程序的 AppleScript。它只是运行一个do shell script删除 prefs 文件的命令。作为面向 GUI 的人,我更容易单击它来拥有它在调试之前运行。此版本的脚本要求删除 prefs 文件,但也可以自定义: http: //www.markdouma.com/developer/DeleteAppPrefs.zip。如果您以前从未运行过它,你会看到选择文件对话框,并且选择的文件作为别名保存在实际的 AppleScript 中,因此不会再次询问你。你可以将图标拖到 AppleScript Editor 上查看脚本或更改它)。

无论如何,如果我要发布一个使用新工具栏布局的应用程序的新版本,并且想要防止配置被覆盖,我会将工具栏的标识符(或自动保存名称)更改为类似“文档工具栏2.0”。

于 2011-03-05T22:29:05.957 回答