将焦点设置在包含TextArea的List ItemRenderer中?

时间:2010-10-29 14:29:00

标签: flex actionscript-3 list focus itemrenderer

我为List组件(Flex 3.5)编写了一个自定义itemrenderer,它是一个包含Label和TextArea的VBox。到目前为止一切正常但我希望第一个itemrenderer中的TextArea获得焦点,以便在Tab键到List时立即变得可编辑。这是可能的,如果我能做到这一点?

我已经添加了一个事件监听器来选择索引0处的项目,但其中的textArea也应该集中在那一刻......

_list.addEventListener(FocusEvent.FOCUS_IN, onListFocusIn);

private function onListFocusIn(e:FocusEvent):void
{
 _list.selectedIndex = 0;
}

1 个答案:

答案 0 :(得分:1)

没有太多的事件。一种hackery方法是覆盖itemRenderer的updateDisplayList

<mx:Script>
    <![CDATA[
        import mx.controls.listClasses.ListBase;
        import mx.managers.FocusManager;

        override protected function updateDisplayList(unscaledWidth:Number, 
                                                      unscaledHeight:Number):void{
            super.updateDisplayList(unscaledWidth, unscaledHeight);

            if(ListBase(owner).isItemSelected(data)){
                focusManager.setFocus(mytext);
             }
        } 
    ]]>
</mx:Script>

更多细节 http://butterfliesandbugs.wordpress.com/2007/06/25/how-to-know-when-my-itemrenderer-is-selected/

http://cookbooks.adobe.com/post_How_to_know_when_an_ItemRenderer_is_selected-5322.html