Доступность Flex - невозможно установить порядок чтения с экрана

У меня возникла проблема, когда я не могу настроить пользовательский порядок чтения текста в приложении Flex. Я устанавливаю tabIndex Я понимаю, что свойство каждого текстового элемента является правильным способом задания порядка чтения для программы чтения с экрана.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute">

  <mx:Label x="10" y="10" text="1" tabIndex="2" />
  <mx:Label x="10" y="36" text="2" tabIndex="1" />
  <mx:Label x="10" y="62" text="3" tabIndex="3" />

</mx:Application>

Для этого небольшого тестового приложения программа чтения с экрана (JAWS 12) читает "1 2 3" вместо "2 1 3".

Некоторые тесты показывают, что это проблема только для моей конкретной конфигурации. Я компилирую приложение с помощью Flex SDK 4.1, но использую только набор компонентов MX и тему Halo. У нас есть довольно сложное приложение, которое было запущено до появления Flex 4, поэтому, хотя мы и сделали переход к компиляции с последним SDK, мы еще ничего не обновили, чтобы использовать набор компонентов Spark.

Когда я делаю похожее тестовое приложение, используя 4.1 SDK и тему Spark компоненты +, порядок чтения устанавливается правильно. Тот же результат, если я создаю тестовое приложение и компилирую с использованием 3.5 SDK - все работает.

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

Кто-нибудь сталкивался с подобными проблемами, или есть какие-нибудь предложения, которые могли бы заставить это работать?

2 ответа

Вы хотите использовать текст вместо метки. Документация:

Элемент управления Label считывается программой чтения с экрана, когда он связан с другими элементами управления или когда режим форм неактивен. Элемент управления Label не может быть сфокусирован в режиме Forms или с клавиатуры.

...

Элемент управления "Текст" не фокусируется и читается программами чтения с экрана только в том случае, если режим "Формы" неактивен.

Я также обнаружил, что это может быть лучшим решением. Пример приведен во Flex 4, но вы можете сделать то же самое с Label во Flex 3, просто нужно реализовать интерфейс IFocusManagerComponent.

В данный момент я работаю с JAWS 11 во Flex 3, так что у Хавнента еще не было этой проблемы. Но я читал об одном варианте размещения копий компонентов за сценой, слишком сложном для наших нужд, и позволяющем программе чтения с экрана просто читать эти компоненты по порядку:

http://www.adobe.com/accessibility/products/flash/reading.html

Кроме того, уловка, которую я видел, состояла в том, чтобы установить TabIndex с шагом 10. JAWs заботятся только об их порядке, и если вам нужно добавить дополнительные компоненты, вам не нужно будет перенумеровывать все. то есть 10, 20, 30, тогда, если вам нужно, вы можете добавить 11 вместо нумерации всего.

Брайан

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