我正在向我的iOS应用添加Accessibility支持,但我的一个表格视图单元格中的集合视图遇到了问题。
例如,当用户从第一个单元格(水平)滚动到第二个单元格时,Accessibility仍然读取第一个单元格的内容。如果我尝试点击第二个单元格中的视图,它会突出显示第二个单元格左侧的空白区域(第一个单元格将在此处,但不再可见),并读取第一个单元格的内容。
当集合视图 * 不在 * 表视图单元格中时(即UIView的子视图),则不会发生这种情况。
我怀疑这与调用UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification)
有关,我尝试在许多不同的地方调用它,但没有任何效果。
下面的两个屏幕截图显示了UIView中的集合视图。辅助功能已启用,因此在点击时会以黑色边框选中。
1.当用户点击第一个单元格时,它将被选中。
1.当用户点击“下一个”,转到第二个小区,并点击该小区时,新小区将被选择。
接下来的两个屏幕截图显示了表视图单元格中的集合视图。
当用户点击第一个单元格时,它会被选中,并且VoiceOver会正确读取“我是标签0”。
然而,当用户点击“下一个”,转到下一个单元格,并点击第二个单元格时,它不会被选择,并且VoiceOver仍将读取“我是标签0”。
代码为here on github。
3条答案
按热度按时间fslejnso1#
我也遇到过类似的问题,但最终还是解决了。我认为你和你的妻子
而不是彼此
我有一个垂直滚动的表格视图,每个单元格包含一个水平滚动的标题和集合视图。
我只在标题和集合视图单元格上将
isAccessibilityElement
设置为true
,在其他单元格上设置为false
。然后,我子类化了
UICollectionView
并覆盖了以下NSObject
方法:它基本上只是告诉画外音你的集合视图有这些可访问的元素。集合视图本身是不可访问的,这不是问题,相反。你可能需要
而不是
下面是一些来自文档(UIAccessibility.h)的更多阅读:
UIAccessibilityContainer
方法可以被覆盖,以出售由单个UIView
管理的单个元素。例如,单个UIView可能会绘制几个(对最终用户而言)具有单独意义和功能的项目。将每个项目作为单独的辅助功能元素出售是很重要的。
容器中没有具体
UIView
示例表示的子元素(可能是绘制的文本或图标)可以使用UIAccessibilityElement
类的示例表示(请参见UIAccessibilityElement.h)。可访问性容器必须将
NO
返回到-isAccessibilityElement。要让漂亮的3指语音超过滚动你可能要覆盖
并相应地滚动收藏视图。
ctrmrzij2#
你可能想试试这个:
在
onNextButtonTapped
方法中,在调用scrollToItemAtIndexPath
之后。这将在下一个集合视图单元格上聚焦Accessibility。
owfi6suc3#
我发现没有必要子类化UICollectionView。相反,在容器视图(UITableViewCell)中定义可访问性元素,如下所示:
现在可以导航所有collectionView元素。