【问题标题】:Flex: setFocus does not work after ENTER on inputFlex:在输入 ENTER 后 setFocus 不起作用
【发布时间】: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>

【问题讨论】:

    标签: actionscript-3 apache-flex actionscript flex4 flex4.5


    【解决方案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;

      【讨论】:

        猜你喜欢
        • 2020-03-08
        • 1970-01-01
        • 1970-01-01
        • 2019-02-22
        • 1970-01-01
        • 1970-01-01
        • 2011-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多