首页 > 解决方案 > 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

有谁知道如何解决这个问题?

标签: accessibilityswiftuimac-catalyst

解决方案


据我所知,没有办法摆脱这个错误,也没有必要;这是 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


推荐阅读