macos - 新 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 的大小不正确有一个看似相关的问题,但事实证明这是一个单独的问题(可以通过手动重置工具栏minSize
和maxSize
控制的frame.size
)。
因此,解决方案是使用 Xcode 12.5.1 或更高版本。
解决方案
在没有任何代码的情况下在情节提要中添加项目可以正常工作,我刚刚测试过。所以可能你在代码中做错了什么。或者它已在最新的 XCode 中修复。
到目前为止,我发现这只适用于 Catalina,即使在 Mojave 上也会崩溃。根据@ThomasTempelmann 的说法,它在 XCode 12.5.1 中更好,但我还没有测试过。
推荐阅读
- android - Android - 在 XML 复合视图组件中创建新视图属性并传递给其子级 - 布局中的数据绑定
- swift - Swift“字符串中的日期”转换不起作用,但格式适用于在线服务?
- javascript - 从ajax结果到表单值
- javascript - 过滤函数不返回值
- javascript - Vue.js 并根据其他字段更改输入字段
- vb6 - 聊天机器人的新线
- javascript - 如何 - 提高我的代码性能以从数组中获取唯一值 - Javascript
- c++ - 使用 SCH_CRED_FORMAT_CERT_HASH 时,AcquireCredentialsHandle 在内核模式下失败
- python - 将列表列表的列表转换为字典
- c# - 在 MS BotFramework 中使用 PromptDialog 开始对话