Установите фокусировку за кадром на определенную ячейку таблицы в uitableview (UIAccessibility)
У меня есть UITableView, который я прокручиваю в нижнюю часть, как только пользователь добавляет к нему другую ячейку element/table. Для экрана это прекрасно работает, потому что пользователь может видеть ячейку, которую они только что добавили в нижней части таблицы. Но при запуске моего приложения с помощью VoiceOver первый UITableCell для фокусировки и чтения является верхней ячейкой, видимой на экране.
Я хочу установить его так, чтобы ячейка, которая была сфокусирована, а затем прочитана, как только появится этот UITableView, является самой последней ячейкой в таблице. Как мне это сделать? Похоже, это было бы очень просто, но я не могу понять.
Вот что я пробовал до сих пор (в cellForRowAtIndexPath):
if (cellJustAdded && indexPath.row == [array count]-1) {
cell.accessibilityElementIsFocused = YES; //obviously this does not work
}
но я не думаю, что вы можете использовать accessibilityElementIsFocused как это.
Ответы
Ответ 1
Если вы хотите, чтобы VoiceOver выбрал определенный элемент, вы можете отправить уведомление о доступности с помощью UIAccessibilityPostNotification( ... );
.
В зависимости от того, изменится ли основной (полный экран) или незначительный (только макет), вы должны отправить сообщение
-
UIAccessibilityScreenChangedNotification
(полное изменение)
-
UIAccessibilityLayoutChangedNotification
(небольшое изменение)
В обоих случаях необязательный аргумент - это элемент, который должен перемещать VoiceOver.
Итак, добавив новую ячейку в свой вид таблицы, вы вызовете
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,
yourNewCellThatShouldHaveFocus);