accessibility - Catalyst 'SwiftUI.AccessibilityNode' 不是已知的可序列化元素
问题描述
我使用 Xcode 11.1 创建了一个全新的 iOS 单页应用程序(包括 SwiftUI)并启用了 Mac Catalyst。在我的 Mac(当然是 macOS 10.15)上运行新项目后,在窗口上点击一次后出现以下错误。
2019-10-18 12:59:48.479186+0200 test[3130:122148] Metal API Validation Enabled
2019-10-18 12:59:50.960734+0200 test[3130:122148] [AXRuntimeCommon] Unknown client: test
2019-10-18 12:59:50.962261+0200 test[3130:122148] [AXRuntimeCommon] This class 'SwiftUI.AccessibilityNode' is not a known serializable element and returning it as an accessibility element may lead to crashes
2019-10-18 12:59:51.313 test[3130:122148] **************_____________**************AXError: AVPlayerView is not a kind of NSView
1 AccessibilityBundles 0x00007fff42ee3b69 _AXBValidationCheckIsKindOfClass + 201
2019-10-18 12:59:51.386 test[3130:122148] **************_____________**************AXError: MKStarRatingView is not a kind of NSView
1 AccessibilityBundles 0x00007fff42ee3b69 _AXBValidationCheckIsKindOfClass + 201
注意:我还删除了沙盒功能,否则我会收到关于无法写入的错误ApplicationAccessibilityEnabled
有谁知道如何解决这个问题?
解决方案
据我所知,没有办法摆脱这个错误,也没有必要;这是 SwiftUI 中固有的东西。它出现在 iOS、iPadOS 和(因此)Mac Catalyst 上,甚至出现在一个全新的项目中。除了让我们的开发人员担心之外,它似乎也没有伤害任何东西。
在过去的六个月里,我一直在 SwiftUI 中全职工作,开发一个现在在 iOS、iPadOS 和 MacOS (Catalyst) 上运行的应用程序。错误从This class 'SwiftUI.AccessibilityNode' is not a known serializable element
一开始就存在。在六个月的 SwiftUI 开发中,我没有发现它是任何问题的根源。
如果你打开 Xcode,创建一个新的单视图 iOS 项目,然后不加改动地运行它,它会显示“Hello, World!”。点击“你好,世界!” 并且您的控制台将记录[AXRuntimeCommon] This class 'SwiftUI.AccessibilityNode' is not a known serializable element and returning it as an accessibility element may lead to crashes
.
我尝试添加可访问性修饰符,例如:
struct ContentView: View {
var body: some View {
Text("Hello, World!")
.accessibility(hint: Text("Just say hi"))
.accessibility(identifier: "helloWorld")
}
}
当我单击“Hello, World!”时,仍然会记录错误。
我还尝试扩展SwiftUI.AccessibilityNode
以使其成为可序列化的元素,例如:
import SwiftUI
extension SwiftUI.AccessibilityNode {
}
Xcode 说type SwiftUI.AccessibilityNode doesn't exist
。
推荐阅读
- javascript - 在 React 父功能组件(react-dual-listbox)中访问 React 子类组件状态的最佳方法
- javascript - Sequelize - 我必须在哪里放置“onDelete”选项
- swift - 方法`enumerateChildNodes`没有找到节点
- linux-kernel - 如何在arm上使用pte页面映射强制lowmem映射?
- c# - 如果源和日志名称不同,Serilog 事件日志将不起作用
- vba - 未知文本框的文本框退出事件
- mysql - 如何在 LEFT JOIN 条件下使用附加列
- hyperledger-fabric - Hyperledger Fabric:创建 orderer.example.com 错误
- r - 使用什么测试来验证使用 r 中的 nowcasting 包获得的动态因子模型
- nuxt.js - Nuxt 在哪里安装 3rd 方脚本?