我需要在窗口没有焦点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>
Run Code Online (Sandbox Code Playgroud)
stage.focus = null不起作用 -stage.focus已经是null当窗口没有焦点时,所以它不起作用。
input.focusManager.deativate()确实可以,但这个管理器似乎用于其他控件,所以这不是一个好的选择。文档中说
如果多个 IFocusManagerContainer 同时可见,则 SystemManager 会激活和停用 FocusManager。
但在这个示例应用程序中,我有两个 TextInput,当我停用第一个 TextInput 的 focusManager 时,第二个 TextInput 不再恢复对 alt-tab 的焦点。 …