VoiceOver 正在寻找附近的可访问元素来阅读?
Posted
技术标签:
【中文标题】VoiceOver 正在寻找附近的可访问元素来阅读?【英文标题】:VoiceOver is finding a nearby accessible element to read? 【发布时间】:2018-06-22 13:55:12 【问题描述】:我正在为我的 ios 应用添加辅助功能。我看到一种特定情况,当我点击具有 isAccessibilityElement = false
的 UIView 并且其所有祖先视图也是 isAccessibilityElement = false
时,VoiceOver 将说出来自该视图的 sibling 的文本 - a此视图父级的不同子级。在 Accessibility Inspector 中,当我将鼠标悬停在此视图上时,兄弟姐妹会亮起。
我不明白我正在点击的视图层次结构之外的某些视图如何用于 VoiceOver 文本。我没有看到针对 iOS 11 记录的任何此类行为。这怎么可能发生?
编辑: 我创建了一个带有 UITableView 的简单项目,其中包含 UITableViewCell 对象,每个对象都包含一个 UILabel。点击 UITableViewCell(在 UILabel 之外)将读取其中的 UILabel。如何禁用该行为,以便仅点击标签本身而不是其包含的 UITableViewCell 将读取标签?
【问题讨论】:
【参考方案1】:一个表格视图单元(container) 和它的内容(children) 不能一起访问(解释here)。
按照下面的步骤回答您的编辑提及,以便仅点击标签本身,而不是点击其包含的UITableViewCell
,将读取标签。。 p>
创建您自己的 UITableViewCell
类,包括一个标签。
class TestTableViewCell: UITableViewCell
@IBOutlet weak var myLabel: UILabel!
override var accessibilityTraits: UIAccessibilityTraits
get return UIAccessibilityTraitNone
set
在单元实现中将您的标签定义为UIAccessibilityElement
,以包含在其accessibilityElements
数组中。
func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell
let zeCell = tableView.dequeueReusableCell(withIdentifier: "myPersoCell",
for: indexPath) as! TestTableViewCell
zeCell.accessibilityElements = nil
var elements = [UIAccessibilityElement]()
let contentA11yElt = UIAccessibilityElement(accessibilityContainer: zeCell)
contentA11yElt.accessibilityTraits = UIAccessibilityTraitStaticText
contentA11yElt.accessibilityFrameInContainerSpace = zeCell.contentLabel.frame //To be adapted
contentA11yElt.accessibilityLabel = "label content"
elements.append(contentA11yElt)
zeCell.accessibilityElements = elements
return zeCell
按照这些代码 sn-ps 将允许选择位于表格视图单元格内的标签并根据需要读出其内容。
【讨论】:
以上是关于VoiceOver 正在寻找附近的可访问元素来阅读?的主要内容,如果未能解决你的问题,请参考以下文章
寻找 iOS VoiceOver 辅助功能指南:当我点击文本时,它应该说多少?