我們正在調整我們的Intranet Web應用程序以符合WCAG 2.0標準。該應用程序提供了一個複雜的控件列表,但我無法讀取屏幕讀取列表中的任何內容,但labelDisplay或列表的labelFunction返回的是什麼。如何讓屏幕閱讀器讀出itemRenderer組件
下面是一個簡化的例子,screenOrder和listBox讀取「labelOne」,列表中每個項目的labelFunction的結果。
<?xml version="1.0"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:access="accessibility.*">
<fx:Script><![CDATA[
private function listLabelFunction(item : Object) : String {
return item.one;
}
]]></fx:Script>
<s:VGroup>
<access:Label id="labelOne" text="This text will be read out!"/>
<s:List hasFocusableChildren="true" labelFunction="listLabelFunction">
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer>
<fx:Script><![CDATA[
import mx.controls.Alert;
]]></fx:Script>
<s:HGroup id="hGroup">
<access:Label id="labelDisplay" text="{data.one}"/>
<access:Label id="labelTwo" text="{data.two}"/>
<s:Button id="button" label="{data.button}" click="Alert.show('Ok!')"/>
</s:HGroup>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
<s:dataProvider>
<mx:ArrayCollection>
<fx:Object one="one" two="two" button="ok"/>
<fx:Object one="une" two="deux" button="ok"/>
<fx:Object one="uno" two="due" button="ok"/>
<fx:Object one="um" two="dois" button="ok"/>
</mx:ArrayCollection>
</s:dataProvider>
</s:List>
</s:VGroup>
</s:Application>
「訪問標籤」;確保標籤被讀出並按照標籤順序。
package accessibility {
import mx.managers.IFocusManagerComponent;
import spark.components.Label;
public class Label extends spark.components.Label implements IFocusManagerComponent {
}
}
我能標籤列表中的過每一個項目,即「labelDisplay的」,「labelTwo」和「按鈕」,但是屏幕閱讀器不讀出來。
是否可以讀取每個標籤和按鈕?
我遵循你的建議,他們工作得很好!我能夠在每個項目渲染器內部的控件中進行選擇! 謝謝! – Adz
@Adz太棒了!爲了我的好奇心和他人的利益,你解決了哪個解決方案? –
我應用了這兩個建議,它們在兩者之間都不正確。 – Adz