Как установить свойство focus для TextInput, созданного с использованием AddChild? - PullRequest
0 голосов
/ 12 мая 2009

У меня есть следующий MXML:

<mx:State name="myState">
    <mx:AddChild relativeTo="{myhbox}" position="after">
        <mx:Box verticalAlign="middle" horizontalAlign="center" width="100%" height="100%">
            <mx:Form id="myForm" width="479" verticalScrollPolicy="off" horizontalScrollPolicy="off">
                <mx:FormItem label="My Label:" fontWeight="bold" id="myLabel" direction="vertical">
                    <mx:TextInput id="myTextInput" width="282" />
                        <mx:HBox>
                            <mx:Button label="Go" click="go();" id="goButton" />
                        </mx:HBox>
                </mx:FormItem>
            </mx:Form>
        </mx:Box>
    </mx:AddChild>
</mx:State>

Как установить фокус на поле TextInput с помощью ? Я пробовал следующее, но это только приводит к выделению поля - курсор не отображается в TextInput:

<mx:SetProperty target="{stage}" name="focus" value="{myTextInput}"/>

Короче говоря, я хочу, чтобы курсор появился в поле.

ОБНОВЛЕНИЕ : Я понял это. Смотрите комментарии для решения.

Ответы [ 2 ]

1 голос
/ 08 мая 2010

Добавить «creationComplete» в TextInput и заставить его вызывать метод setFocus для TextInput

1 голос
/ 13 мая 2009

Я стараюсь избегать использования тега состояния AddChild. Обычно лучше поместить все это в компонент и использовать SetProperty, чтобы установить visible и includeInLayout, когда вы хотите, чтобы он отображался.

Вы всегда можете переопределить видимое в вашем пользовательском компоненте, чтобы установить фокус на поле. Или создайте пользовательский установщик, который делает то же самое

public function set show(value:Boolean):void
{
  visible = true;
  includeInLayout = true;
  if (value)
  myFunctionThatSetsTheFocus();
}
...