Событие Flex focusOut для TextInput и всплывающих окон не снимает фокус? - PullRequest
0 голосов
/ 21 июля 2011

У меня есть гибкое приложение с несколькими полями и одним текстовым полем с событием focusOut:

<mx:FormItem label="Last" x="226" y="1">
    <s:TextInput id="lastNameClientTextInput" text="@{_currentEditClient.lastName}" change="textFieldChangeCapitalize(event)" focusOut="lastNameClientTextInput_focusOutHandler(event)"/>
</mx:FormItem>

Как и ожидалось, когда я вкладываю или щелкаю поле после ввода значения, он выполняет мой метод "lastNameClientTextInput_focusOutHandler", который просто открывает новое окно:

protected function lastNameClientTextInput_focusOutHandler(event:FocusEvent):void
        {

                clientSearchPopUp = new ClientListWindow();
                PopUpManager.addPopUp(clientSearchPopUp, this, true);
                PopUpManager.centerPopUp(clientSearchPopUp);                    

        } 

Это окно будет делать «PopUpManager.removePopUp (this);» когда пользователь нажимает кнопку закрытия.

Однако проблема в том, что когда окно закрывается, фокус снова возвращается на lastNameClientTextInput! Я не могу нажать или перейти из поля!

Когда я выхожу, я вначале вижу, как курсор ibeam перемещается из поля фамилии в следующее поле в порядке табуляции (адрес), а затем появляется мое окно. Когда я закрываю окно, оно перемещается НАЗАД в поле фамилии и выделяет значение.

Как будто мне нужно что-то сделать для проверки события focusOut?

Ответы [ 2 ]

0 голосов
/ 07 мая 2015

Поздно я знаю, но Flex может ссылаться на свойство FocusManager.lastFocus, чтобы возобновить фокус с последнего времени, когда компонент был активен. При запуске всплывающего окна попробуйте позвонить:

(focusManager as FocusManager).mx_internal::lastFocus = null;
0 голосов
/ 21 июля 2011

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

НТН;

Amy

...