首页 > 解决方案 > 新 NSSearchToolbarItem 的向后兼容性

问题描述

在 macOS 11 中,Apple 引入了一个新的 NSToolbarItem NSSearchToolbarItem,当焦点切换到工具栏项时,它会自动调整大小以适应打字。

在此处输入图像描述 在此处输入图像描述

Apple 在这里表示这与旧版本的 macOS 向后兼容:https ://developer.apple.com/wwdc20/10104 (11:50 分钟)

但是,NSSearchToolbarItem在 macOS 10.13 (High Sierra) 上使用 from interface builder 启动我的应用程序时,我的应用程序会因以下应用程序特定信息而崩溃:

*** 由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“*** -[NSKeyedUnarchiver decodeObjectForKey:]:无法为键(NS.objects)解码类(NSSearchToolbarItem)的对象;该类可以在源代码或未链接的库中定义,以 NSException 类型的未捕获异常终止

在 10.15 上启动它可以正常工作。我还不能测试 10.14。

Thomas Tempelmann 于 7 月 6 日更新

事实证明,这是旧 Xcode 12 版本的错误,现在已在 Xcode 12.5.1 中修复。

我打开了一个赏金,因为在 High Sierra 上运行时,工具栏内的 NSSegmentedControls 的大小不正确有一个看似相关的问题,但事实证明这是一个单独的问题(可以通过手动重置工具栏minSizemaxSize控制的frame.size)。

因此,解决方案是使用 Xcode 12.5.1 或更高版本。

标签: macoscocoanstoolbarnstoolbaritem

解决方案


在没有任何代码的情况下在情节提要中添加项目可以正常工作,我刚刚测试过。所以可能你在代码中做错了什么。或者它已在最新的 XCode 中修复。

到目前为止,我发现这只适用于 Catalina,即使在 Mojave 上也会崩溃。根据@ThomasTempelmann 的说法,它在 XCode 12.5.1 中更好,但我还没有测试过。


推荐阅读