macos - 新 NSSearchToolbarItem 的向后兼容性

标签 macos cocoa nstoolbar nstoolbaritem

在 macOS 11 中,Apple 引入了一个名为 NSSearchToolbarItem 的新 NSToolbarItem,当焦点切换到工具栏项时,它会自动调整大小以适应输入。
enter image description here
enter image description here
在这里,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 大小不正确有一个看似相关的问题,但事实证明这是一个单独的问题(可以通过手动重置工具栏的 minSizemaxSize 到控件的 frame.size )。
因此,解决方案是使用 Xcode 12.5.1 或更高版本。

最佳答案

在没有任何代码的情况下在 Storyboard中添加项目可以正常工作,我刚刚测试过。所以可能你在代码中做错了什么。或者它在最新的 XCode 中被修复。
到目前为止,我发现这仅适用于 Catalina,即使在 Mojave 上它也会崩溃。根据@ThomasTempelmann 的说法,它在 XCode 12.5.1 中更好,但我还没有测试过。

关于macos - 新 NSSearchToolbarItem 的向后兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64739974/

相关文章:

swift - 将文件移动到我自己的应用程序中存在同名文件的目录时,是否可以使用 Finder 提供的警报?

objective-c - 'if' 语句是否始终评估所有条件?

macos - 在NSToolbar中实现NSSegmentedControl来控制NSTabViewController

objective-c - 仅当鼠标悬停在 NSPanel 上时才显示 NSToolbar

cocoa - 将 NSToolBar 放在窗口底部

macos - 使用 SASS 命令行查看文件时出错

macos - 仅当应用程序从 cron 的打开命令打开时处理证书时应用程序出现不合理的系统错误

ios - CALayer 可见区域改变时通知?

objective-c - CIFaceDetector 原点不准确

objective-c - 设置事件指示器直到从服务器加载图像?