Установка фокуса на ListRenderer списка с TextArea внутри? - PullRequest
1 голос
/ 29 октября 2010

Я написал пользовательский обработчик элементов для компонента List (Flex 3.5), который представляет собой VBox с ярлыком и TextArea, обернутыми внутри. Пока все работает нормально, но я хочу, чтобы TextArea в первом элементе визуализации элементов получил фокус, чтобы он сразу стал редактируемым при вставке в список. Возможно ли это, и если как мне этого добиться?

Я уже добавил прослушиватель событий, который выбирает элемент с индексом 0, но текстовая область в нем также должна быть сфокусирована в этот момент ...

_list.addEventListener(FocusEvent.FOCUS_IN, onListFocusIn);

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

1 Ответ

1 голос
/ 31 октября 2010

Для этого не так много событий. Один из способов сделать это - переопределить updateDisplayList для вашего itemRenderer

<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

...