Flex辅助功能 - 无法设置屏幕阅读器顺序

时间:2011-04-13 21:48:41

标签: flex flex4 accessibility screen-readers halo

我遇到问题,我无法在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 个答案:

答案 0 :(得分:0)

您需要使用Text而不是Label。文档:

  

屏幕读取Label控件   读者与之相关联时   其他控件,或表单模式时   没有用。 Label控件不是   可以在表格模式或由   键盘。

...

  

文本控件不可聚焦,而且是   仅在表格时由屏幕阅读器阅读   模式无效。

我也found this这可能是更好的解决方案。示例在Flex 4中,但您可以使用Flex 3中的Label执行相同操作,只需要实现IFocusManagerComponent接口。

答案 1 :(得分:0)

我现在正在使用Flex 3中的JAWS 11,所以havnt还有这个问题。但是,我已经读过关于将组件的副本放在舞台上的一个选项,它对我们的需求来说太复杂了,并且让屏幕阅读器按顺序阅读这些组件:

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

另外,我看到的一个技巧是以10为增量设置TabIndex.JAW只关心它们的顺序,如果你需要添加额外的组件,你不需要重新编号。即10,20,30然后如果你需要你可以添加11,而不是重新编号。

布赖恩

相关问题