ウィンドウにフォーカスがないときにTextInput
フォーカスを削除する必要があります。しかし、私はこれを行う通常のAdobe Air
方法を見つけることができません。
サンプルアプリは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
>
<fx:Script>
<![CDATA[
protected function onFocusIn(event:FocusEvent):void{
input.appendText('I');
}
protected function onFocusOut(event:FocusEvent):void{
input.appendText('o');
// input.focusManager.deactivate();
// stage.focus = null;
// focusManager.setFocus(input2);
// stage.focus = stage;
}
]]>
</fx:Script>
<s:VGroup>
<s:TextInput id="input" focusIn="onFocusIn(event)" focusOut="onFocusOut(event)" />
<s:TextInput id="input2" />
</s:VGroup>
stage.focus = null
動作しません -ウィンドウにフォーカスがstage.focus
ないnull
ため、動作しません。input.focusManager.deativate()
トリックを行いますが、このマネージャーは他のコントロールに使用されているように見えるため、これは適切なオプションではありません。ドキュメントには次のように記載されています。複数の IFocusManagerContainer が同時に表示されている場合、SystemManager は FocusManager をアクティブ化および非アクティブ化します。
しかし、このサンプル アプリには 2 つの TextInputs があり、最初の focusManager を非アクティブ化すると、2 つ目は alt-tab にフォーカスが戻りません。
フォーカスを別のものに設定することはできますが、特別な「ダミー」入力を作成することは、ある種のモンキー パッチであり、避けられなくなるまで使用を避けることを好みます。
TextInput の親に設定
stage.focus
しても効果はありません。それで、ウィンドウにフォーカスがないときにコンポーネントからフォーカスを削除するより良い方法を知っていますか?