iOS VoiceOver - 无法在 ARKit 中捕捉触摸

iOS VoiceOver - Cannot capture touches in ARKit

当 VoiceOver 被禁用时,我有一个带有 SceneKit 会话的功能性 ARKit。

我可以使用 touchesBegan(_:) 捕捉触摸。

然而,当我激活 VoiceOver 时,触摸似乎被辅助功能框架捕获。我无法在 sceneView 中获得任何用户触摸反馈以实现自定义操作。

我尝试将打印语句放入 :

但其中 none 似乎被调用了。 启用可访问性后,是否有任何方法可以获得用户触摸的任何反馈? (我只是想通过双击映射一些自定义操作) 或者注册一些辅助功能通知以获得一些用户触摸反馈?

我还观察到以下可能相关的警告:

[辅助功能] *** -[SCNSceneAccessibility accessibilityContainer] 中的断言失败,@:10772554112。

@ [Accessibility] |SCNSceneAccessibility.m:44 -[SCNSceneAccessibility accessibilityContainer]|视图应该已经设置了我们的容器

编辑(解决方案)

情节提要中的这个最终设置允许捕捉触摸: 1) 确保在主视图中启用辅助功能 2) 确保启用了用户交互 3) 确保启用允许直接交互特性

如果您想获得用户触摸的任何反馈,您必须让 VoiceOver 知道您的视图可以通过将其 accessibilityTraits 设置为 UIAccessibilityTraitAllowsDirectInteraction 来直接解释触摸事件。

您应该收到此特定视图的手势通知,告知您的应用负责触摸拦截,而不是画外音。

如果您想在屏幕视图中插入可访问的子视图,我建议您 disable its accessibility flag 因为如果父视图可访问,则其子视图不可访问。