在 macOS 11 中,Apple 引入了一个名为 NSSearchToolbarItem
的新 NSToolbarItem,当焦点切换到工具栏项时,它会自动调整大小以适应输入。
在这里,Apple 表示这与旧版本的 macOS 向后兼容:https://developer.apple.com/wwdc20/10104(分钟 11:50)
但是,从 macOS 10.13 (High Sierra) 上的界面构建器中使用 NSSearchToolbarItem
启动我的应用程序,会导致我的应用程序崩溃,并显示以下特定于应用程序的信息:
*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (NSSearchToolbarItem) for key (NS.objects); the class may be defined in source code or a library that is not linked' terminating with uncaught exception of type NSException
在 10.15 上启动它可以正常工作。我还没有能够测试 10.14。
Thomas Tempelmann 7 月 21 日 6 日更新
事实证明,这是旧 Xcode 12 版本的一个错误,现在已在 Xcode 12.5.1 中修复。
我打开了一个赏金计划,因为在 High Sierra 上运行时,我在工具栏内的 NSSegmentedControls 大小不正确有一个看似相关的问题,但事实证明这是一个单独的问题(可以通过手动重置工具栏的
minSize
和maxSize
到控件的 frame.size
)。因此,解决方案是使用 Xcode 12.5.1 或更高版本。
最佳答案
在没有任何代码的情况下在 Storyboard中添加项目可以正常工作,我刚刚测试过。所以可能你在代码中做错了什么。或者它在最新的 XCode 中被修复。
到目前为止,我发现这仅适用于 Catalina,即使在 Mojave 上它也会崩溃。根据@ThomasTempelmann 的说法,它在 XCode 12.5.1 中更好,但我还没有测试过。
关于macos - 新 NSSearchToolbarItem 的向后兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64739974/