我需要从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的某些父项也没有任何影响。那么,你知道有什么更好的方法可以在窗口没有焦点时从组件中移除焦点吗?