Ios UIAccessibilityElement,带按钮特征,添加;“一中一”;“画外音后讲话”按钮
我使用UIAccessibilityElement将来自多个标签和按钮的信息封装在自定义UITableViewCell中。当“画外音”启用且用户浏览每个元素时,我希望将特定元素分组在一起。例如,用户不必说“最喜欢的食物”,而是必须再次刷卡才能听到“Pizza”,它会说“最喜欢的食物Pizza” 在我的子类单元格中,我通过覆盖accessibilityElements实现了这一点。然而,当我向accessibilityElements添加UIButton时,我遇到了一个问题。在下面的代码中,我创建了viewProfileButtonAccessibilityElement。我添加了可访问性标签和trait.按钮。当通过Voice Over说话时,它说“查看个人资料图片按钮一个一个”。我不知道“一个一个”是从哪里来的。知道是什么导致VoiceOver在说出单词按钮后添加“one of one”吗Ios UIAccessibilityElement,带按钮特征,添加;“一中一”;“画外音后讲话”按钮,ios,swift,accessibility,voiceover,Ios,Swift,Accessibility,Voiceover,我使用UIAccessibilityElement将来自多个标签和按钮的信息封装在自定义UITableViewCell中。当“画外音”启用且用户浏览每个元素时,我希望将特定元素分组在一起。例如,用户不必说“最喜欢的食物”,而是必须再次刷卡才能听到“Pizza”,它会说“最喜欢的食物Pizza” 在我的子类单元格中,我通过覆盖accessibilityElements实现了这一点。然而,当我向accessibilityElements添加UIButton时,我遇到了一个问题。在下面的代码中,我创建
private var cachedAccessiblityElements: [Any]?
override var accessibilityElements: [Any]? {
set {
cachedAccessiblityElements = newValue
}
get {
// Return the acessibility elements if we've already created them
if let cachedAccessiblityElements = cachedAccessiblityElements {
return cachedAccessiblityElements
}
var elements = [UIAccessibilityElement]()
if let favoriteFoodTitle = favoriteFoodTitle.text, let favoriteFood = favoriteFood.text {
let favoriteFoodAccessibilityElement = UIAccessibilityElement(accessibilityContainer: self)
favoriteFoodAccessibilityElement.accessibilityLabel = favoriteFoodTitle + " " + favoriteFood
favoriteFoodAccessibilityElement.accessibilityFrameInContainerSpace = self.favoriteFoodTitle.frame.union(self.favoriteFood.frame)
elements.append(favoriteFoodAccessibilityElement)
}
let viewProfileButtonAccessibilityElement = UIAccessibilityElement(accessibilityContainer: self)
viewProfileButtonAccessibilityElement.accessibilityLabel = "View Profile Picture"
viewProfileButtonAccessibilityElement.accessibilityTraits = UIAccessibilityTraits.button
viewProfileButtonAccessibilityElement.accessibilityFrameInContainerSpace = self.viewProfileButton.frame
elements.append(viewProfileButtonAccessibilityElement)
cachedAccessiblityElements = elements
return cachedAccessiblityElements
}
}
我不知道“一人一人”是从哪里来的。知道是什么导致VoiceOver在说出单词按钮后添加“one of one”吗
private var cachedAccessiblityElements: [Any]?
override var accessibilityElements: [Any]? {
set {
cachedAccessiblityElements = newValue
}
get {
// Return the acessibility elements if we've already created them
if let cachedAccessiblityElements = cachedAccessiblityElements {
return cachedAccessiblityElements
}
var elements = [UIAccessibilityElement]()
if let favoriteFoodTitle = favoriteFoodTitle.text, let favoriteFood = favoriteFood.text {
let favoriteFoodAccessibilityElement = UIAccessibilityElement(accessibilityContainer: self)
favoriteFoodAccessibilityElement.accessibilityLabel = favoriteFoodTitle + " " + favoriteFood
favoriteFoodAccessibilityElement.accessibilityFrameInContainerSpace = self.favoriteFoodTitle.frame.union(self.favoriteFood.frame)
elements.append(favoriteFoodAccessibilityElement)
}
let viewProfileButtonAccessibilityElement = UIAccessibilityElement(accessibilityContainer: self)
viewProfileButtonAccessibilityElement.accessibilityLabel = "View Profile Picture"
viewProfileButtonAccessibilityElement.accessibilityTraits = UIAccessibilityTraits.button
viewProfileButtonAccessibilityElement.accessibilityFrameInContainerSpace = self.viewProfileButton.frame
elements.append(viewProfileButtonAccessibilityElement)
cachedAccessiblityElements = elements
return cachedAccessiblityElements
}
}
您在具有特征的单元格中创建的每个UIControl按钮将按照您提到的方式发声
无论tableviewcell中创建的按钮数量是多少,所有按钮都将使用相同的后缀发出声音,表示它们所属的单元格以及部分中的单元格总数
在您的示例中,“one of one”表示您的按钮位于第一个单元格中,并且您的分区中只有一个单元格
例如,如果在包含十个单元格的部分的第三个单元格中创建两个按钮,您将听到两个按钮的后缀“三个十个”
我希望这一解释足够清楚,能够理解你的“一人合一”的来源