我正在构建一个 Flex 应用程序,该应用程序必须可访问并符合第 508 节准则。一些预先构建的部分大量使用DataGroup,DataGrid和ItemRenderers。我甚至无法获得使用 ItemRenderers 创建的任何内容来接收键盘焦点,因此似乎不可能显示它们的可访问性属性。
有没有技巧可以让焦点可用于项目渲染器?或者我可以使用一些替代方案?
解决方案:
我偶然发现了这个,我不完全确定为什么会这样,但解决方案很简单。只需将implements="mx.managers.IFocusManagerComponent"
添加到自定义ItemRenderer
的根标签中,然后列表中的每个项目将能够获得焦点并公开其accessibilityProperties
。
奇怪的是,如果自定义渲染器无法实现所需的IFocusManagerComponent
方法,Flex 编译器不会抱怨。我不知道为什么,但我推测这些方法是在代码链上的某个地方实现的,除非组件显式实现IFocusManagerComponent
,否则不会使用。
我现在遇到的唯一问题是只有可见项目显示其accessibilityProperties
,这是有道理的,因为ItemRenderers
仅为屏幕上的可见项目创建,但是如果最后一个可见ItemRenderer
失去焦点,我应该找到某种方法自动滚动列表。