带有按钮特征的UIAccessibilityElement在语音对话按钮后添加“one of one”

问题描述 投票:1回答:1

我正在使用UIAccessibilityElement来封装来自自定义UITableViewCell中的多个标签和按钮的信息。启用“配音”并且用户滑过每个元素时,我希望将特定元素组合在一起。例如,用户不必再说“喜欢的食物”,而是必须再次滑动以听到“披萨”,它会说“最喜欢的食物披萨”。

在我的子类单元格中,我通过覆盖accessibilityElements来实现这一点。但是,当我向AccessibilityElements添加UIButton时,我遇到了问题。在下面的代码中,我创建了viewProfileButtonAccessibilityElement。我添加了辅助功能标签和特征.button。当Voice Over说话时,“查看配置文件图片按钮之一”。我无法弄清楚“其中一个”的来源。在说出单词按钮后,知道是什么导致Voice Over添加“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
    }
  }
ios swift accessibility voiceover
1个回答
0
投票

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

无论tableviewcell中创建的按钮数量是多少,都将使用相同的后缀进行发声,指示它们所属的单元格以及该部分中的单元格总数。

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

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

我希望这个解释足够清楚,可以理解你的“一个”来自哪里。

© www.soinside.com 2019 - 2024. All rights reserved.