0

機能的な例を次に示します。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            public function go():void{              
                Alert.show("The focus will return to txtOne. Look: ");
            }
        ]]>
    </mx:Script>
    <mx:VBox>
        <mx:TextInput id="txtOne" text="1" focusOut="go()"/>
        <mx:TextInput id="txtTwo" text="2"/>    
    </mx:VBox>  
</mx:Application>

txtOneからtxtTwoに変更すると、アラートが表示され、[OK]を押すと、フォーカスがtxtOneに戻ります。私はそれが起こらないようにしたい。これを解決する方法は?

4

2 に答える 2

0

Alert.showクローズコールバック引数があるので、いつ閉じられて他の何かにフォーカスを設定したかがわかります。更新:フォーカスアウトイベントを処理できることを示すフラグが必要です。

private var needAlert:Boolean = true;

public function go():void
{
    if (needAlert)
    {
        Alert.show("The focus will return to txtOne. Look: ",
            "", 0, null, myCloseHandler);
        needAlert = false;
    }
}

private function myCloseHandler(event:CloseEvent):void
{
    this.setFocus();
    needAlert = true;
}
于 2011-10-26T13:14:15.310 に答える
0

これも試して、ユーザーが望む場所にフォーカスが移動するようにします

<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.events.CloseEvent;
        import mx.managers.IFocusManagerComponent;
        private var ignoreFocusChange:Boolean = false;

        private var focusTargetOnReturn: IFocusManagerComponent;

        public function go():void
        {

            if(!ignoreFocusChange){
                focusTargetOnReturn = focusManager.getFocus();

                Alert.show("The focus will not return to txtOne anymore. Look: ",
                    "", 0, null, myCloseHandler);
            }
        }

        private function myCloseHandler(event:CloseEvent):void
        {               
            ignoreFocusChange = true;
            focusManager.setFocus(focusTargetOnReturn);
            ignoreFocusChange = false;
        }
    ]]>
</fx:Script>
<mx:VBox>
    <mx:TextInput id="txtOne" text="1" focusOut="go()"/>
    <mx:TextInput id="txtTwo" text="2"/>    
</mx:VBox>  

于 2013-04-29T23:50:16.343 に答える