【发布时间】:2020-11-08 15:42:59
【问题描述】:
在 macOS 11 中,Apple 引入了一个名为 NSSearchToolbarItem 的新 NSToolbarItem,当焦点切换到工具栏项时,它会自动调整大小以适应打字。
Apple 在这里表示这与旧版本的 macOS 向后兼容:https://developer.apple.com/wwdc20/10104(11:50 分钟)
但是,使用 macOS 10.13 (High Sierra) 上的界面生成器中的 NSSearchToolbarItem 启动我的应用程序时,我的应用程序会因以下应用程序特定信息而崩溃:
*** 由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“*** -[NSKeyedUnarchiver decodeObjectForKey:]:无法解码类对象(NSSearchToolbarItem)的键(NS.objects);班级可能是 在源代码或未链接的库中定义的终止 带有未捕获的 NSException 类型的异常
在 10.15 上启动它可以正常工作。我还不能测试 10.14。
Thomas Tempelmann 于 7 月 6 日更新
事实证明,这是旧 Xcode 12 版本的错误,现在已在 Xcode 12.5.1 中修复。
我打开了一个赏金,因为在 High Sierra 上运行时,我遇到了一个与工具栏内 NSSegmentedControls 大小不正确有关的问题,但事实证明这是一个单独的问题(可以通过手动重置工具栏的minSize 和maxSize 到控件的frame.size)。
因此,解决方法是使用 Xcode 12.5.1 或更高版本。
【问题讨论】:
-
image lookup -rn NSSearchToolbarItem显示NSSearchToolbarItem存在于 AppKit 10.15 中,但不存在于 10.13 中。 -
是的,但 Apple 在会话 10104 中表示,如果您从 nib 文件加载它,它是向后兼容的。它应该用
NSToolbarItem替换为NSSearchField。但显然不是。 -
顺便说一句,该问题被报告为错误(FB8889904),请参阅developer.apple.com/forums/thread/666033
标签: macos cocoa nstoolbar nstoolbaritem