iOS Voice over,如何跳过表格视图单元而不是说“未启用”

时间:2019-11-27 15:24:55

标签: ios swift voiceover

我有一个包含多个单元格的表格视图。这些单元格中有几个纯粹是装饰性的,带有分隔线。只要在Xcode中使用Accessibility Inspector开发人员工具击中这些单元之一,它就会说“未启用”。

因此,第一部分,我不确定在单元格上启用“ Voice Over”说“未启用”是否是最佳实践,因为它会带来更干净的体验,并且更接近无Voice Over版本,从而完全跳过了它。但是,我可以想象这样一种情况:即使用户知道所有单元格(即使是装饰性的),也可能对用户更明显地进行页面导航。

如果这不是最佳实践问题,我该如何跳过它而不说什么呢?

目前,我已尝试在情节提要中将这些单元格的可访问性设置为完全关闭,并在创建分隔符的内部View中应用相同的方法:

enter image description here

我还在属性检查器中禁用了UserInteractionEnabled

在单元格代码中,我已设置:

> dput(r)
structure(list(ID_DRAIN = c(115504, 115865, 115892, 115955, 115983, 
115940, 116033, 116028, 115873, 115905, 115835, 115885, 115452, 
115472, 115749, 115900, 115944, 115817, 115860, 115234, 115753, 
115505, 115899, 115939, 116015, 115191, 115214, 115339, 115799, 
115809, 115898, 115864), rowname = c("1", "7", "8", "9", "10", 
"11", "12", "14", "18", "19", "22", "23", "25", "26", "27", "29", 
"30", "37", "38", "39", "42", "44", "45", "46", "49", "50", "51", 
"57", "59", "60", "61", "63")), row.names = c(1L, 7L, 8L, 9L, 
10L, 11L, 12L, 14L, 18L, 19L, 22L, 23L, 25L, 26L, 27L, 29L, 30L, 
37L, 38L, 39L, 42L, 44L, 45L, 46L, 49L, 50L, 51L, 57L, 59L, 60L, 
61L, 63L), class = "data.frame")

> dput(b)
structure(list(LabelAtlas = structure(c(2L, 2L, 2L, 2L, 4L, 7L, 
7L, 7L, 7L, 7L, 7L, 7L, 7L), .Label = c("Culvert", "dam", "Ford", 
"Ramp/bed_sill", "sluice", "unknown", "weir"), class = "factor"), 
    rowname = c("57", "11", "7", "19", "11", "25", "38", "37", 
    "57", "57", "25", "25", "7")), row.names = c(325L, 413L, 
414L, 1607L, 2382L, 2837L, 2870L, 2945L, 3272L, 3402L, 3433L, 
3562L, 4753L), class = "data.frame")

但是,检查器仍在这些单元格上说“未启用”,并且可访问性检查器将特征显示为“未启用静态文本”

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

UITableViewCell可以看作是一个容器,其中嵌入了许多元素(buttons ...),按原样,您不能同时拥有一个父视图(表格视图单元格)及其子视图(标签,按钮...),它们与VoiceOver是both accessible:可以选择您的单元格或其内容。

在您的情况下,您不希望屏幕阅读器读取单元格本身或其内容,因此必须指定:

  • yourCell.isAccessibilityElement = false
  • yourCell.accessibilityElementsHidden = false

按照此基本原理,您跳过表格视图单元格,而不要说“未启用”

相关问题