0

ポップアップへのリンク(テキストエリアボックスが含まれている)がクリックされるたびに、テキストエリアボックスに自動的にフォーカスしようとしています。私は creationComplete でそうしようとしましたが、一度しか機能しません。初期化でも機能しません。

<s:SkinnablePopUpContainer xmlns:fx="http://ns.adobe.com/mxml/2009" backgroundAlpha="0" contentBackgroundAlpha="0"
                       width="100%" height="100%"
                       xmlns:s="library://ns.adobe.com/flex/spark" xmlns:scripts="scripts.*"
                       creationComplete="notesTextArea.setFocus();">
4

2 に答える 2

0

@gustyaquino からの回答は良い提案ですが、使用しているSkinnablePopUpContainerクラスにより適した、ややクリーンなソリューションがあると思います。

SkinnablePopUpContainerポップアップを表示するために通常使用される open() メソッドがありますドキュメントによると、このメソッドは ( @gustyaquino のコードのようにopen()を使用して) ポップアップを開きますが、トランジション効果も再生し、最後にイベントをディスパッチします。PopUpManagerFlexEvent.OPEN

また、SkinnablePopUpContainer一度作成して再利用します。これが、"creationComplete" および "initialize" イベント ソリューションが初めて機能する理由です (オブジェクトが実際に作成されたとき)。@gustyaquino のソリューションでは、毎回新しいポップアップが作成されていることに注意してください。SkinnablePopUpContainerこれが、クラスが存在する前のロール方法でした。

以下の例では、「open」イベントを使用してポップアップが開かれたことを検出し、そこにフォーカスを設定しています。TextInputこれは少しクリーンな方法だと思います (ポップアップを再利用し、ポップアップクラスの内部にフォーカスするコードを配置します)。

アプリケーション MXML:

<?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"
               xmlns:local="*"
               width="100%" height="100%">

    <fx:Declarations>
        <local:MyPopUp id="poppy" />
    </fx:Declarations>

    <s:Button label="Open pop up" click="poppy.open(this)" />

</s:Application>

ポップアップ MXML:

<?xml version="1.0" encoding="utf-8"?>
<s:SkinnablePopUpContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                           xmlns:s="library://ns.adobe.com/flex/spark" 
                           xmlns:mx="library://ns.adobe.com/flex/mx"
                           width="300" height="300"
                           backgroundColor="#c0c0c0"
                           open="onPopUpOpened()">

    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;

            override public function updatePopUpPosition():void
            {
                PopUpManager.centerPopUp(this);
                // this doesn't work here
                //myInput.setFocus();
            }

            private function onPopUpOpened():void
            {
                myInput.setFocus();
            }

        ]]>
    </fx:Script>

    <s:layout>
        <s:VerticalLayout paddingLeft="10" paddingRight="10" paddingTop="10"/>
    </s:layout>

    <s:TextInput id="myInput" width="100%"  />
    <s:Button label="Close" click="close()"/>
</s:SkinnablePopUpContainer>
于 2013-06-05T16:43:23.923 に答える