У меня есть большая квадратная сетка (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
}