画外音不关注 UICollectionView

Voice Over not focusing on UICollectionView

我正在尝试为分页 UICollectionView 设置辅助功能,因此 VoiceOver 会说“[Cell 1 description],Page 1 of 5”,但 VoiceOver 专注于 UICollectionViewCell 本身,所以用户不知道这是分页。

奇怪的是三指滑动分页在无障碍模式下工作,只是默认不进入

有人知道如何告诉 Voice Over UICollectionView 是可访问性元素,而不是单元格吗?

let goalsArr: [String] = ["1", "2", "3", "4", "5"]

@IBOutlet weak var goalsCollectionView: UICollectionView!

func setup() {
    goalsCollectionView.dataSource = self
    goalsCollectionView.delegate = self
    goalsCollectionView.isAccessibilityElement = true
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    guard let cell = goalsCollectionView.dequeueReusableCell(withReuseIdentifier: goalCellXib, for: indexPath) as? ASGoalCollectionViewCell else {
        return UICollectionViewCell()
    }

    cell.lblText.text = goalsArray[indexPath.row]
    cell.isAccessibilityElement = true
    cell.accessibilityLabel = "cell " + goalsArray[indexPath.row]

    return cell
}

已经尝试将单元格设置为 .isAccessibilityElement = false,但 VoiceOver 完全跳过了 UICollectionView

实现目标的一种方法是:

  • 将您的 collection 视图定义为 UIAccessibilityElement 子类。
  • 将其特征设置为 .adjustable 以便 select 通过向右或向左滑动来选择不同的元素。
  • 根据 selected 单元格调整标签和值。
  • 定义 collection 视图 [accessibilityElements]。

这可能很乏味,但这正是 Apple 工程师推荐的⟹ complete and detailed example 在 WWDC session 中引入的,请不要犹豫,看看它以完美实现您的 collection 查看 VoiceOver。