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".
Надеюсь, поможет.