2011-04-13 48 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」而不是「2 1 3」。

一些測試似乎表明,這只是我特定配置的問題。我正在使用Flex SDK 4.1編譯應用程序,但僅使用MX組件集和Halo主題。我們已經有了一個相當複雜的應用程序,它在Flex 4出現之前就開始了,所以雖然我們用最新的SDK進行了編譯,但我們還沒有升級任何東西來使用Spark組件集。

當我使用4.1 SDK和Spark組件+主題製作類似的測試應用程序時,閱讀順序設置正確。如果我製作測試應用程序並使用3.5 SDK進行編譯,則結果相同 - 一切正常。

我知道我可以切換到使用Spark組件,但我試圖避免這種情況,因爲這意味着時間軸將不得不在我正在進行的當前項目中進行更改。

有沒有人遇到任何類似的問題,或有任何建議,可能會得到這個工作?

回答

0

您將要使用文本而不是標籤。文檔:

A標籤控制由屏幕閱讀 讀者當它與其他 控件相關聯的,或當表單模式 是不活動的。標籤控件不是 ,可以在表單模式下使用,也可以使用 鍵盤。

...

文本控件不可作爲焦點,是 屏幕閱讀器讀取,只有當表單 模式是無效的。

我也found this這可能是一個更好的解決方案。這個例子是在Flex 4中,但您可以對Flex 3中的Label執行相同的操作,只需要實現IFocusManagerComponent接口。

+0

感謝您的回覆。不過,我仍然無法在使用文本控件時更改閱讀順序。 – 2011-04-13 22:13:20

+0

我的問題不在於讓文本首先被讀取 - 工作正常。問題是控制閱讀順序。在我處理的實際應用程序中,頁面佈局有點複雜,我需要能夠指定頁面上文本的讀取順序,因爲基於位置的默認排序並不正確。 – 2011-04-13 22:17:56

+0

啊gotcha。那麼,標籤索引僅適用於同一容器內的組件。所以,如果你的文本不在同一個容器內,除非你把一些東西拼湊在一起,否則你會遇到麻煩。現在我想到了,我很驚訝沒有人做過一個圖書館,使這個更容易處理... – 2011-04-14 12:16:34

0

我現在在Flex 3中使用JAWS 11,所以havnt有這個問題呢。但是,我讀過有關一個把組件的副本臺下,它太複雜了我們的需求,並讓屏幕閱讀器只是爲了閱讀這些組件的選項:

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

此外,招我看到的是以10爲增量設置TabIndex。JAW只關心它們的順序,如果你需要添加額外的組件,你不需要重新編號。即10,20,30,那麼如果你需要,你可以添加11,而不是重新編號。

Brian

+0

感謝您的迴應。我記得在某個時候閱讀關於在舞臺後面放置內容的副本,現在您再次提到它。雖然,我懷疑它可能與切換到Spark組件的工作一樣多,所以如果涉及到它,我可能最終會這樣做。感謝提供了關於tabIndex值的提示 - 我會牢記這一點! – 2011-04-14 16:32:57