Flex:在输入 ENTER 后 setFocus 不起作用
Posted
技术标签:
【中文标题】Flex:在输入 ENTER 后 setFocus 不起作用【英文标题】:Flex: setFocus does not work after ENTER on input 【发布时间】:2015-08-07 02:18:41 【问题描述】:我想将焦点设置在 TextInput 上:按下按钮后效果很好,但是当我按下 TextInput 上的 ENTER 按钮时不工作:任何想法?
<?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>
【问题讨论】:
【参考方案1】:我以前也遇到过同样的问题。我不完全知道框架内部的内容,但我只是通过将焦点设置到另一个组件来完成我的工作。我知道这不是正确的方法。
在你的情况下:
<?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>
我认为它以前不起作用是因为它与“启用”属性有关。
希望对你有帮助。
【讨论】:
【参考方案2】:不要将焦点转移到 Ashish 代码中的其他组件,而是替换
focusManager.setFocus(btn);与
stage.focus = null;
【讨论】:
以上是关于Flex:在输入 ENTER 后 setFocus 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
WM_SETFOCUS和WM_KILLFOCUSWM_GETDLGCODECM_ENTER
想要在 Flex 的 Spark textinput 控件中设置光标位置