我遇到问题,我无法在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组件,但是我试图避免这种情况,因为它意味着时间线必须改变我正在进行的当前项目。
有没有人遇到任何类似问题,或者有任何建议可能会让这个问题起作用?
答案 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,而不是重新编号。
布赖恩