Доступность 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 вместо нумерации всего.
Брайан