这段子写了个自由文本输入组件,却发现当组件激活后开始输入文本时一切还是正常,但左右移动方向键时焦点却在选项卡上控制着选项卡的选择

本以为得禁用选项卡的键盘事件来解决这问题,翻了下官方的"TextArea"组件类,才猛然大悟,没有扩展IFocusManagerComponent接口,其实我在输入文字时焦点并没有在我的组件上.

罪过罪过,不知何时把组件的受焦功能打入冷宫了,太没把她当回事了,也是开发不够细微之故!

IFocusManagerComponent of Help:

IFocusManagerComponent 接口用于定义一些接口,可获得焦点的组件必须实现这些接口才能从 FocusManager 获得焦点。UIComponent 类中提供了此接口的基本实现,但 UIComponent 并不实现完整的 IFocusManagerComponent 接口,因为部分 UIComponent 无需获得焦点。因此,要使 UIComponent 派生的组件成为一个可获得焦点的有效组件,只需将“implements IFocusManagerComponent”添加到类定义即可。

IFocusManagerComponent扩展方法
  1. function get focusEnabled():Boolean;   
  2. function set focusEnabled(value:Boolean):void;   
  3. function get mouseFocusEnabled():Boolean;    
  4. function get tabEnabled():Boolean;    
  5. function get tabIndex():int;   
  6. function setFocus():void;   
  7. function drawFocus(isFocused:Boolean):void;  
扩展应用例子
  1. public class FreeText extends UIComponent implements IFocusManagerComponent,IListItemRenderer{   
  2. //my code..   
  3. }