2011-04-13 6 views
0

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

<?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" вместо "1 2 3".

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

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

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

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

ответ

0

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

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

...

Контрольный текст не фокусируемый и читать чтения с экрана только тогда, когда формы режим неактивен.

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

+0

Благодарим за отзыв. Тем не менее, я все еще не могу изменить порядок чтения при использовании элемента управления Text. –

+0

Моя проблема заключается не в том, чтобы текст был прочитан в первую очередь - это прекрасно работает. Проблема заключается в управлении порядком чтения. В фактическом приложении, с которым я имею дело, макет страницы несколько сложный, и мне нужно указать порядок, в котором текст на странице читается, потому что порядок по умолчанию, основанный на позиции, не получается правильным. –

+0

Ah gotcha. Ну, индекс вкладки работает только для компонентов в одном контейнере. Поэтому, если ваш текст не находится в одном контейнере, у вас появятся какие-то проблемы, если вы не соберете что-нибудь вместе. Теперь, когда я думаю об этом, я удивляюсь, что никто никогда не делал библиотеку, чтобы облегчить эту проблему ... –

0

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

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

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

Brian

+0

Спасибо за ответ. Я помню, как я читал о том, чтобы в какой-то момент добавить копию контента за сцену, теперь, когда вы снова это упомянули. Хотя, я подозреваю, что, вероятно, это будет так же много работать, как переход на компоненты Spark, поэтому я могу просто закончить это, если это произойдет. Спасибо за подсказку о том, как разделить значения tabIndex - я буду помнить об этом! –