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