我正在使用UIAccessibilityElement来封装来自自定义UITableViewCell中的多个标签和按钮的信息。启用“画外音”并且用户在每个元素之间滑动时,我希望将特定元素分组在一起。例如,用户不必再说“最喜欢的食物比萨”,而是必须再次滑动才能听到“比萨”,它将说“最喜欢的食物比萨”。
在我的子类化单元中,我通过覆盖accessibilityElements来完成此工作。但是,将UIButton添加到accessibilityElements时遇到问题。在下面的代码中,我创建viewProfileButtonAccessibilityElement。我添加了可访问性标签和特征.button。当Voice Over用语音说出时,它说“查看个人资料图片按钮之一”。我不知道“一个”来自何处。您知道在说出单词按钮后,Voice Over会添加“其中之一”的原因吗?
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
}
}
答案 0 :(得分:0)
您在具有.button
特性的单元格中创建的每个UIControl按钮都会以您提到的方式发声。
无论在tableviewcell中创建多少按钮,都会用相同的后缀标出 ,以指示它们所属的单元格以及该部分中单元格的总数。
在您的示例中,“其中一个” 表示您的按钮在第一个单元格中,并且您的部分中只有一个单元格。
例如,如果在包含十个单元格的部分的第三单元格中创建两个按钮,您将听到两个按钮的后缀“十个三” 。
我希望这种解释很清楚,可以根据需要理解您的“一个人” 来自何处。