Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIAccessibilityElement,带按钮特征,添加;“一中一”;“画外音后讲话”按钮_Ios_Swift_Accessibility_Voiceover - Fatal编程技术网

Ios UIAccessibilityElement,带按钮特征,添加;“一中一”;“画外音后讲话”按钮

Ios UIAccessibilityElement,带按钮特征,添加;“一中一”;“画外音后讲话”按钮,ios,swift,accessibility,voiceover,Ios,Swift,Accessibility,Voiceover,我使用UIAccessibilityElement将来自多个标签和按钮的信息封装在自定义UITableViewCell中。当“画外音”启用且用户浏览每个元素时,我希望将特定元素分组在一起。例如,用户不必说“最喜欢的食物”,而是必须再次刷卡才能听到“Pizza”,它会说“最喜欢的食物Pizza” 在我的子类单元格中,我通过覆盖accessibilityElements实现了这一点。然而,当我向accessibilityElements添加UIButton时,我遇到了一个问题。在下面的代码中,我创建

我使用UIAccessibilityElement将来自多个标签和按钮的信息封装在自定义UITableViewCell中。当“画外音”启用且用户浏览每个元素时,我希望将特定元素分组在一起。例如,用户不必说“最喜欢的食物”,而是必须再次刷卡才能听到“Pizza”,它会说“最喜欢的食物Pizza”

在我的子类单元格中,我通过覆盖accessibilityElements实现了这一点。然而,当我向accessibilityElements添加UIButton时,我遇到了一个问题。在下面的代码中,我创建了viewProfileButtonAccessibilityElement。我添加了可访问性标签和trait.按钮。当通过Voice Over说话时,它说“查看个人资料图片按钮一个一个”。我不知道“一个一个”是从哪里来的。知道是什么导致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
    }
  }
我不知道“一人一人”是从哪里来的。知道是什么导致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”表示您的按钮位于第一个单元格中,并且您的分区中只有一个单元格

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

我希望这一解释足够清楚,能够理解你的“一人合一”的来源