具有按钮特征的UIAccessibilityElement在语音结束讲话按钮后添加“一个之一”

时间:2019-03-26 15:52:12

标签: ios swift accessibility voiceover

我正在使用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
    }
  }

1 个答案:

答案 0 :(得分:0)

您在具有.button特性的单元格中创建的每个UIControl按钮都会以您提到的方式发声。

无论在tableviewcell中创建多少按钮,都会用相同的后缀标出 ,以指示它们所属的单元格以及该部分中单元格的总数。

在您的示例中,

“其中一个” 表示您的按钮在第一个单元格中,并且您的部分中只有一个单元格。

例如,如果在包含十个单元格的部分的第三单元格中创建两个按钮,您将听到两个按钮的后缀“十个三”

我希望这种解释很清楚,可以根据需要理解您的“一个人” 来自何处