Flex: setFocus не работает после ввода на входе

Я хочу установить фокус на TextInput: Это работает нормально после нажатия кнопки, но не работает, когда я нажимаю кнопку ENTER на TextInput: ЛЮБАЯ ИДЕЯ?

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Script>
        <![CDATA[
            public function sendText():void {

                txt_input.enabled = false;
                trace(txt_input.text);
                txt_input.text = "";
                setTimeout(function ():void { 
                    txt_input.enabled = true;
                    focusManager.setFocus(txt_input );
                }
                    ,3000);         
            }

        ]]>
    </fx:Script>
    <s:TextInput id="txt_input" x="173" y="330" enter="sendText()"/>
    <s:Button x="345" y="331" label="Button" click="sendText()"/>
</s:Application>

2 ответа

Вместо смещения фокуса на другой компонент в коде Ашиша замените

focusManager.setFocus(БТН); с

stage.focus = null;

Я сталкивался с той же проблемой раньше. Я точно не знаю, что происходит внутри фреймворка, но я выполнил свою работу, просто сосредоточившись на каком-то другом компоненте. Я знаю, что это не правильный путь.

В твоем случае:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Script>
        <![CDATA[
            public function sendText():void {

                txt_input.enabled = false;
                focusManager.setFocus(btn);
                trace(txt_input.text);
                txt_input.text = "";
                setTimeout(function ():void { 
                    txt_input.enabled = true;
                    focusManager.setFocus(txt_input );
                }
                    ,3000);         
            }

        ]]>
    </fx:Script>
    <s:TextInput id="txt_input" x="173" y="330" enter="sendText()"/>
    <s:Button id="btn" x="345" y="331" label="Button" click="sendText()"/>
</s:Application>

Я думаю, что раньше это не работало, потому что это как-то связано со свойством "enabled".

Надеюсь, поможет.

Другие вопросы по тегам