A UICollectionView
может рассматриваться как контейнер, в который встроено много элементов (его ячейки) , и, как есть, вы не можете одновременно иметь родительское представление (представление коллекции ) и его дочерние представления (его ячейки) , которые оба доступны с VoiceOver: либо можно выбрать представление коллекции или его ячейки .
Можно ли сделать так, чтобы VO сначала считывал метку доступности представления коллекции?
Следуя объяснению выше, вы не можете с настоящим конфигурация.
Однако решение может состоять в том, чтобы создать UIAccessbilityElement
, который оборачивает представление вашей коллекции простой меткой, которую вы хотите прочитать: этот элемент будет выбран до того, как ячейки представления коллекции станут в очереди.
Наконец, я настоятельно рекомендую взглянуть на демонстрацию внутри этого подробного видео WWD C видео , которое может дать некоторые полезные советы для вашего варианта использования.
⚠️ ⬛️◼️? ▪️ ED IT ▪️?◼️⬛️ ⚠️ (после комментариев MarkS)
Я пытаюсь найти способ обернуть его, но пока мне не удалось .
Попробуйте этот фрагмент кода ниже, чтобы создать элемент доступности:
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let a11yWrapper = UIAccessibilityElement(accessibilityContainer: view!)
a11yWrapper.accessibilityFrameInContainerSpace = CGRect.init(x: 40.0,
y: 40.0,
width: 100.0,
height: 50.0)
a11yWrapper.accessibilityLabel = "Filter Bar"
a11yWrapper.accessibilityTraits = .staticText
view.accessibilityElements = [a11yWrapper]
}
}
Адаптируйте его к среде своего приложения, и заставит VO прочитать метку доступности сначала просмотр коллекции .
В документации нет примеров, которые бы конкретно указывали go на эту ситуацию.
Я думаю, это потому, что ваш дизайн не должен так не делается.
Обычно доступным является либо само представление коллекции, либо его ячейки, а не обе, как объяснено ранее.
Однако, согласно тому, что вы раскрыли в своем посте, вы могли бы используйте настраиваемые действия для достижения своей цели: каждое действие будет соответствовать определенной ячейке ... это определенно не идеально, но это настолько близко, насколько вы можете достичь того, о чем вы просите .