2011-01-16 14 views
0

Ich versuche, den Fokus programmgesteuert auf eine neu erstellte TextField übergeben, aber aus irgendeinem Grund setSelection und setFocus funktionieren nicht. Zum Beispiel finden Sie in meinem Test-Code unten:Wie setze ich Fokus und Auswahl auf ein TextField?

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="_init()"> 
<mx:Button click="{tf.setSelection(1,2)}" /> 
<mx:Script> 
<![CDATA[ 
import mx.core.UIComponent; 
    public var tf:TextField 


    private function _init():void{ 

     tf = new TextField(); 

      tf.text = "abcdefghijk"; 
    tf.type = TextFieldType.INPUT; 
    tf.autoSize = TextFieldAutoSize.LEFT; 

    var ui:UIComponent = new UIComponent(); 
    ui.addChild(tf); 
     addChild(ui); 
     tf.setSelection(0,1); 
     ui.setFocus(); 

     ui.addEventListener(MouseEvent.MOUSE_DOWN, function():void{ 
      tf.setSelection(0,3); 
     }); 
    } 

]]> 
</mx:Script>  
</mx:Application> 

Die einzige setSelection, die alles tut, ist die 0,3 eins auf MOUSE_DOWN. Ich nehme an, das alles hat etwas mit dem Textfeld zu tun, das den Fokus mit dem Mausklick erhält, aber ich kann nicht für das Leben von mir herausfinden, wie man das manuell macht.

Antwort

1

Bei der Untersuchung anderer Klassen, motiviert durch Florian Vorschlag, stieß ich auf UITextField die Unterklassen TextField. Obwohl es die IFocusManagerComponent-Schnittstelle nicht implementiert, hat es eine SetFocus-Methode, die zu diesem Zeitpunkt scheint zu funktionieren.

Als zusätzlichen Vorteil kann es direkt zu einem Container hinzugefügt werden, dh ohne zuerst ein UIComponent-Parent zu erstellen.

1

setFocus arbeitet an Komponenten, die die mx.managers.IFocusManagerComponent implementieren. Textfeld ist keine Flex-Komponente und implementiert diese Schnittstelle nicht, deshalb funktioniert es nicht. Wenn ich Sie wäre, würde ich ein TextInput anstelle verwenden, sehen Sie, dass Sie ein Eingabesteuerelement benötigen

+0

Ich fühle mich wie die TextInput-Klasse möglicherweise zu sperrig oder schwierig, einfache Dinge mit (z. B. automatische Größenanpassung) zu tun, deshalb habe ich mich entschieden, TextField zu verwenden. Ich versuche, Textbereiche/Beschriftungen für die Verwendung in einem Whiteboard zu erstellen, daher ist es wichtig, dass ich die richtige Klasse für den Job auswähle, da sonst einfache Dinge in Zukunft viel schwieriger werden. – cammil

Verwandte Themen