如何设置辅助功能容器以使手势正常工作?

问题描述

我有一个具有这种布局的视图控制器(请注意黄色和表格视图是兄弟视图):

enter image description here

我希望黄色视图充当容器,因此我在 viewDidLoad 中执行此操作:

yellowView.isAccessibilityElement = true
view.accessibilityElements = [yellowView!,tableView!]

在旁白中,我从辅助功能转子中选择“容器”,并希望能够上下滑动以从黄色视图移动到表格视图并再次返回:

黄色(向下滑动)→ TableView(向下滑动)→ Tabbar(向上滑动)→ tableView(向上滑动)→ 黄色

然而,情况并非如此 - 在 tableView 获得焦点后,向上滑动不会将焦点移动到黄色视图,它只是停在那里。向下滑动,移动到标签栏 - 似乎我的自定义视图被忽略为容器。

我尝试了多种添加超级视图并为其设置 isAccessibilityElement = false 的组合,但似乎没有任何效果。

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

解决方法

似乎我的自定义视图被忽略为容器。

显然,只有原生元素可以被识别为转子的容器。?
我尝试在定义为其容器的视图中创建一个 UIAccessibilityElement,但没有结果。?

我从不将转子与容器项目一起使用,但这个问题引起了我的好奇。 ?
我调查了这个问题并发现了一个 interesting answer,它突出显示了所有原生容器的相同 a11y 特征值……至少那些被 VoiceOver 分析过的。

覆盖特定容器的特征值,例如:

accessibilityContainerType

这是一种解决方法,因为似乎没有为自定义容器做任何其他事情,但我不喜欢使用可能会更改或可能不会在未来版本中使用的原始值。

无论如何,按照这个原理,您现在可以设置辅助功能容器,以便手势与 VoiceOver 转子一起正常工作。 ?

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...