我需要從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()
會訣竅,但它似乎是這個經理用於其他控制,所以這不是一個好的選擇。這是則SystemManager將激活和取消激活FocusManager,然後如果有更多 多個IFocusManagerContainer是在同一時間可見的文檔中說。
但在這個示例應用程序中,我有兩個TextInputs,並且當我爲第一個停用focusManager時,第二個不再將焦點恢復到alt-tab。
我可以將焦點設置爲別的東西,但創建特殊的「虛擬」輸入是某種猴子補丁,我寧願避免使用它,直到它不可避免。
設置
stage.focus
給TextInput的某些父項也沒有任何影響。那麼,你知道有什麼更好的方法可以在窗口沒有焦點時從組件中移除焦點嗎?