将 XIB 中带有 NSTouchBar 的应用程序部署到 10.12 之前的 macOS
Deploy app with NSTouchBar in XIB to macOS prior to 10.12
我设计了一款支持触摸栏的应用。触摸条是在 Interface Builder 中创建的。所有代码都使用 Swift 的#available 检查来确保在 10.12 之前的 macOS 上没有执行触摸条码。
XIB(和应用程序)设置为部署到 10.10,但是当我 运行 我的应用程序时,我仍然会收到如下错误:
-[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (NSTouchBar)
如何确保在 10.12 之前的 macOS 上解码 XIB 时跳过触摸栏?
你有两个选择。
以编程方式创建 UI。
为 class 名称注册虚拟 class 对。我不确定如何在 Swift 中实现这一点,但这里有一个 Obj-C 解决方案:How to use NSVisualEffectView backwards-compatible with OSX < 10.10?。该答案还对组件的后续访问提供了一些额外的警告。
我设计了一款支持触摸栏的应用。触摸条是在 Interface Builder 中创建的。所有代码都使用 Swift 的#available 检查来确保在 10.12 之前的 macOS 上没有执行触摸条码。 XIB(和应用程序)设置为部署到 10.10,但是当我 运行 我的应用程序时,我仍然会收到如下错误:
-[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (NSTouchBar)
如何确保在 10.12 之前的 macOS 上解码 XIB 时跳过触摸栏?
你有两个选择。
以编程方式创建 UI。
为 class 名称注册虚拟 class 对。我不确定如何在 Swift 中实现这一点,但这里有一个 Obj-C 解决方案:How to use NSVisualEffectView backwards-compatible with OSX < 10.10?。该答案还对组件的后续访问提供了一些额外的警告。