Я хочу, чтобы UITableView
был единственным элементом доступности, а не контейнером, открывающим для его ячеек VoiceOver
.
К сожалению, невозможно, как есть .?
Вы можете кодировать его без предупреждения, потому что имеете дело с неофициальным протоколом, но он не будет интерпретироваться VoiceOver
: это беспорядок, потому что вы делаете то же самое на tableView
, что и на простом label
например, но здесь это не работает.
У меня нет технических доказательств, но я думаю, что tableView
не предназначен для того, чтобы быть доступным элементом, должны только его ячейки. ?
Я попытался установить для isAccessibilityElement значение true и присвоить его accessibilityLabel, но он не работал [...], когда я проводил пальцем влево и вправо, VoiceOver проходит через ячейки и не произносит accessibilityLabel
представления таблицы.
A UITableView
можно рассматривать как контейнер, в который встроено много элементов (его ячейки) , и, как есть, вы не можете одновременно иметь родительское представление (вид таблицы) и его дочерние представления (его ячейки) , которые оба доступны с VoiceOver: можно выбрать либо табличное представление, либо его ячейки.
Если вы не хотите проведите по ячейкам, вставьте фрагмент кода ниже:
myTableViewInsideTheCell.accessibilityElementsHidden = true
Затем VoiceOver
информируется о том, что элементы внутри табличного представления не должны интерпретироваться.
Теперь, поскольку табличное представление может ' Чтобы быть видимым как доступный элемент, просто создайте его внутри ячейки табличного представления:
let a11yElt = UIAccessibilityElement(accessibilityContainer: myTableViewCell.contentView)
a11yElt.accessibilityFrameInContainerSpace = myTableViewInsideTheCell.frame
a11yElt.accessibilityTraits = .staticText
a11yElt.accessibilityLabel = "my table view inside the cell is now accessible."
myTableViewCell.accessibilityElements = [a11yElt]
Этот элемент перекрывает ваше табличное представление внутри ячейки и может рассматриваться как любой другой доступный элемент с общими свойствами. 10
Я думаю, что для достижения вашей цели возможно множество других способов, но, следуя этому обоснованию, вы можете заставить VoiceOver рассматривать UITableView как единый элемент доступности .
Вы у вас есть руководство, теперь вам нужно внедрить / адаптировать его в своей среде для достижения своей цели. ?