Установите фокусировку за кадром на определенную ячейку таблицы в 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);