CardVC
) не фокусируется с помощью Full Keyboard Access
Проблемы:
CardVC
и если Full Keyboard Access
включен, навигация при нажатии кнопок Tab
или Arrow
на внешней клавиатуре не переключается обратно на CardVC
.CardVC
выделен (синяя рамка обозначает фокус), но нажатие клавиши space
на внешней клавиатуре не приводит к событию касания. Ожидается: нажатие клавиши space
приведет к переходу к настройкам учетных записей.Видеозапись: ссылка на дропбокс
Просмотр иерархии:
Контроллер базового представления (контроллер фонового представления)
Контроллер представления карт (расширенный из UIViewController — настраиваемая высота/ширина и жест для закрытия при нажатии на фоновый BaseViewController)
Вид таблицы
Одна ячейка с кнопкой
Switch Accounts
.
Посмотрел в:
CardVC
: isAccessibilityElement = true
, accessibilityViewIsModal = true
, accessibilityTraits = [.keyboardKey, .allowsDirectInteraction, ...]
.prioritized
и т. д. Это не работает.Буду рад предложениям о том, как подойти к отладке, связанной с специальными возможностями и полным доступом к клавиатуре.
Связанный:
Full Keyboard Access
согласно обновленным ссылкам в вопросе.Чтобы решить эту проблему, мне пришлось упростить ячейку, чтобы она не содержала кнопку Switch Accounts
— это было добавлено несколько лет назад и вызвало проблему с фокусом при полном доступе с клавиатуры.
Теперь обновленная иерархия выглядит так:
Контроллер базового представления (контроллер фонового представления)
Контроллер представления карт (расширенный из UIViewController — настраиваемая высота/ширина и жест для закрытия при нажатии на фоновый BaseViewController)
Вид таблицы
Ячейка без кнопки
switch accounts
Кнопка
Switch Accounts
(теперь на том же уровне, что и родственное представление tableView)
Чтобы решить эту проблему, я бы рекомендовал изначально установить isAccessibilityElement = false
для всех компонентов в представлении. Такой подход гарантирует, что ни один из элементов не будет доступен по умолчанию. Впоследствии я методично включал доступность для каждого элемента, устанавливая isAccessibilityElement = true
индивидуально. Этот пошаговый процесс поможет определить конкретный элемент, ответственный за проблему.
Важно отметить, что не для каждого элемента требуется настройка isAccessibilityElement = true
. Некоторые элементы, например кнопки, доступны по своей природе, и это свойство включено по умолчанию. Кроме того, крайне важно использовать инспектор специальных возможностей на вашем компьютере. Это дает более четкое представление о том, как инспектор интерпретирует доступность каждого элемента.