5

我正在尝试创建一个带有可立即编辑的 TextInput 的弹出窗口。这意味着一旦显示弹出窗口,用户应该能够在 TextInput 中输入内容。

问题是我无法专注于 textInput。发生的情况是,当第一次按下一个键时,没有插入文本,只有在按下第二个键后,组件才会获得焦点并且用户能够键入。例如,在弹出窗口打开后键入“test”会导致显示“est”...

由于某种原因,该组件仅在用户明确单击它或键入某些内容时才会获得焦点。以编程方式设置焦点不起作用。

有什么想法/建议吗?

代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns="mog.miss.component.*" xmlns:mx="http://www.adobe.com/2006/mxml" >

<mx:Script>
    <![CDATA[
        import mx.managers.IFocusManagerComponent;

        private function focus():void{
            focusManager.setFocus(commentTextInput as IFocusManagerComponent);
            commentTextInput.setSelection(commentTextInput.text.length,commentTextInput.text.length);
        }

    ]]>
</mx:Script>
<mx:TextInput id="commentTextInput" creationComplete="{focus()}" />

</mx:Panel>
4

4 回答 4

2

问题是我用 F10 键触发了弹出调用。F10 是系统保留的......它确实触发了处理程序并创建了弹出窗口,但不知何故应用程序失去了焦点。使用另一个键修复它。唯一的保留键是 F10。更多关于那个

于 2010-09-01T15:49:35.763 回答
0

这取决于你如何尝试去做。对我有用的是处理弹出窗口的 creationComplete 事件:

private function onCreationComplete():void 
{
    focusManager.setFocus(this.mytextInput as IFocusManagerComponent);
}

PS:示例中的“handler”是通过mxml添加的,所以没有参数。

于 2010-07-27T11:07:03.583 回答
0

这对我有用。在creationComplete弹出窗口的情况下:

private function onCreationComplete():void
{
  callLater(this.commentTextInput.setFocus);
}
于 2010-08-31T18:55:50.057 回答
0

就我而言,我刚刚在我的自定义组件中实现了 IFocusManagerContainer 并且一切正常

private var _defaultButton:IFlexDisplayObject = /默认组件/;

    public function get defaultButton():IFlexDisplayObject{
        return _defaultButton;
    }
    public function set defaultButton(value:IFlexDisplayObject):void{
        _defaultButton = value;
        ContainerGlobals.focusedContainer = null;
    }
于 2015-09-21T13:59:21.853 回答