我有一个大的正方形网格(225个单元),构造为2d UICollectionView,我希望盲人用户能够轻松地导航网格。目前,他们需要水平滚动浏览每个正方形才能下楼。理想情况下,我希望有一个自定义的VoiceOver转子,该转子可以左右滑动以进行导航。这可能吗?

如果没有,我会选择使用自定义转子,该转子通过向左/向右滑动来上下移动。我试图通过获取当前的indexPath并使用scrollToItem方法来更改它来创建一个。可以选择转子,但目前没有效果,所以到目前为止,我做错了。

private func setupVerticalRotor() -> UIAccessibilityCustomRotor {

    let vertRotorOption = UIAccessibilityCustomRotor.init(name: "Move vertically") { (predicate) -> UIAccessibilityCustomRotorItemResult? in

        let forward = predicate.searchDirection == UIAccessibilityCustomRotor.Direction.next
        let visibleCells = self.collectionView.visibleCells
        if let firstCell = visibleCells.first {
            if let indexPath = self.collectionView.indexPath(for: firstCell as UICollectionViewCell) {
                if forward {
                    let newIndexPath = IndexPath(row: indexPath.row, section: indexPath.section + 1)
                    self.collectionView.scrollToItem(at: newIndexPath, at: UICollectionView.ScrollPosition.centeredVertically, animated: false)

                }else {
                    let newIndexPath = IndexPath(row: indexPath.row, section: indexPath.section - 1)
                    self.collectionView.scrollToItem(at: newIndexPath, at: UICollectionView.ScrollPosition.centeredVertically, animated: false)
                }
            }
        }
        return UIAccessibilityCustomRotorItemResult.init(targetElement: self.collectionView , targetRange: nil)
    }
    return vertRotorOption
}

最佳答案

理想情况下,我希望有一个自定义的VoiceOver转子,该转子可以左右滑动以进行导航。这可能吗?

本机转子已经具有垂直导航的项目。
ios - 创建自定义VoiceOver转子以垂直导航UICollectionView-LMLPHP

对于您的代码,我建议看一看this custom rotor example +检查您的集合视图单元格是否使用Xcode中的断点进行更新。

关于ios - 创建自定义VoiceOver转子以垂直导航UICollectionView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55969937/

10-09 03:36