Установить accessibilityLabel на UIMenuItem

Я пытаюсь установить accessibilityLabel из UIMenuItem и это, кажется, не имеет никакого эффекта. VoiceOver просто читает заголовок элемента независимо от того, что:

    let foo = UIMenuItem(title: "foo", action: #selector(doSomething))
    item.isAccessibilityElement = true
    item.accessibilityLabel = "bar"

Для этого элемента VoiceOver читает "foo" вместо "bar". Так же accessibilityHint кажется, также игнорируется.

0 ответов

В UIMenuItem элемент на самом деле UICalloutBarButton частный класс, содержащий UIButtonLabel (iOS 13) и, как есть, вы не можете настроить его свойства a11y, даже если можете легко его запрограммировать (неофициальный протокол).
Это безумие, потому что для того, чтобы продавать удобное приложение, вы ДОЛЖНЫ адаптировать его для пользователей, а здесь это определенно не так.

Однако для достижения вашей цели можно применить следующее обходное решение:

  • Сделать контроллер меню недоступным (a11yTraits =.none).
  • Получите рамку контроллера меню (menuFrameproperty) для следующего шага.
  • Создайте доступный элемент, который обертывает меню при отображении (UIAccessibilityElement init + accessibilityFrameInContainerSpace).
  • Для этого нового доступного элемента создайте любые настраиваемые действия, соответствующие каждому элементу [menuItems] ⟹ здесь вы можете указать метку VoiceOver.

Было бы лучше создать доступный элемент для каждого menuItem (а затем обеспечить лучшую настройку), но я не нашел способа получить рамку каждого отдельного элемента.

И, к сожалению, эта проблема актуальна последние 3 года.

⚠️ ⬛️◼️▪️ EDIT ▪️◼️⬛️ ⚠️ (2020/03/19)

Я написал D eveloper T echnical S оддержка Incident (нет 731229763) для этой проблемы, и вот ответ от Apple:

Наши инженеры рассмотрели ваш запрос и определили, что вы столкнулись с известной проблемой, для которой в настоящее время нет известного решения.

Я отправил отчет об ошибке под названием VoiceOver: accessibilityLabel не может быть реализована в элементе UIMenuItem со ссылкой FB7623526.

Теперь вы знаете, почему accessibilityLabel бесполезен и не влияет на элемент UIMenuItem.

Другие вопросы по тегам