2015-05-25 29 views
0

我想將焦點設置爲TextInput:按下按鈕後,此功能正常工作,但當我按下TextInput上的ENTER按鈕時,此按鈕無法工作:ANY IDEA?Flex:setFocus在輸入後不起作用

<?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> 

回答

0

我以前遇到同樣的問題。我不完全知道框架內部會發生什麼,但是通過將焦點設置爲某個其他組件來完成我的工作。我知道它不是正確的方法。

你的情況:

<?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> 

我認爲這din't工作之前,是因爲它有事情做的「啓用」屬性。

希望它有幫助。

1

代替Ashish的代碼把重點轉向其他部件,更換

focusManager.setFocus(BTN);與

stage.focus = null;