2016-09-20 1 views
0

Мое приложение имеет табличный вид с большим, пустым столомHeaderView, позволяющим полностью прорисовывать видимые ячейки из окна (внизу). Таким образом, contentOffset из {0,0} означает, что содержимое прокручивается из окна. Начальное значение contentOffset равно {0, {height tableView}}.Как я могу сделать UITableView с большим заголовком, совместимым с VoiceOver?

Все это работает нормально, но у меня возникла трудная проблема для обеспечения доступности для него.

Пользователь выполняет элементы, начиная с панели навигации и кнопок панели. Как только она снова проведет, чтобы активировать первую ячейку таблицы, таблица автоматически прокручивается до {0,0}. Однако, поскольку первая ячейка не видна в этом элементе contentOffset, она не фокусируется на ней и сохраняет фокус на последнем выбранном элементе.

Могу ли я каким-либо образом предотвратить это или управлять содержимымOffset в режиме VO вручную?

Я создал demo project, показывая свою проблему.

ответ

0

Если в пустом заголовке нет доступного содержимого, попробуйте программно настроить смещение содержимого при загрузке в случае, если UIAccessibilityIsVoiceOverRunning(). Вы также хотите следить за UIAccessibilityVoiceOverStatusChanged и делать то же самое.

+0

Я устанавливаю содержаниеOffset при загрузке. Однако, когда VoiceOver «табуляции» в представлении таблицы, contentOffset автоматически изменяется системой - неправильно. Я не знаю ни о каком событии, ни об ошибке, чтобы обнаружить переключатель VO для нового элемента, а также я не могу легко отличить правильное событие прокрутки VO от неправильного. –

+0

Гипотетически, вы можете использовать неофициальный протокол ['UIAccessibilityFocus' (https://developer.apple.com/reference/uikit/1657010-uiaccessibilityfocus) для обнаружения переходов. – Justin