Flex 焦点相干接口

Flex 焦点相关接口

 

IFocusManager 接口

IFocusManager 定义了一类接口,组件必须实现此类接口才能管理组件中的焦点以响应鼠标活动或键盘活动(Tab 键),才能支持默认按钮。FocusManager 类实现了该接口,关于该接口定义的方法在 FocusManager 类一节有详细描述。

IFocusManagerComponent 接口

IFocusManagerComponent 定义了一类接口,组件必须实现此类接口才能从 FocusManager 获得焦点。大部分的 Flex 组件如 Button, TextInput, CheckBox 等已经实现了该接口,因此它们可以获得焦点,也有一些组件如 Text,Label,Image 等并没有实现该接口,所以这些组件无法获得焦点,我们可以通过覆写该组件并实现 IFocusManagerComponent 接口让这些组件也可以接受焦点。我们以 Text 和 Image 为例实现可以获得焦点的 AccText,AccImage 组件。 

 

IFocusManagerContainer 接口

IFocusManagerContainer 定义了一类接口,容器组件必须实现此类接口才能承载 FocusManager。大部分继承 Container 的的 Flex 容器组件都实现了该接口,List 和 ListBase 没有实现该接口,因此 List 的内容是无法获得焦点的,如果用户自定义的组件继承 List 或者 ListBase,必须实现该接口才能支持 Accessibility 全键盘,mx.controls.Menu 继承 List 并实现了 IFocusManagerContainer 接口,Menu 的源代码可以做为用户扩展 List 的参考。

 

IFocusManagerComplexComponent 和 IFocusManagerGroup

IFocusManagerComplexComponent 定义了一类接口,可以拥有多个内部焦点目标的组件可以实现实现此类接口以获得来自 FocusManager 的焦点,该接口开发人员很少需要用到,FlexHTMLLoader 组件实现了此接口,它允许同时存在 Flex 的焦点和 Html 的焦点。

IFocusManagerGroup 定义了一类接口,分组后归到具有以下特征的集中的组件都必须实现此类接口:在任何给定的时刻,都只能选择集中的一个成员。例如,RadioButton 实现 IFocusManagerGroup,因为在任一时刻,同一组中的一系列 RadioButton 只可以有一个 RadioButton 被选中,并且 FocusManager 需要确保不为那些未被选中去响应使用 Tab 键移动焦点的 RadioButton 提供焦点。