繁体   English   中英

将焦点设置在Popup的textInput控件上

[英]Setting focus on a Popup's textInput control

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

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

由于某种原因,组件仅在用户明确单击或键入内容时获得焦点。 Programmaticaly设置焦点不起作用。

有什么想法/建议吗?

码:

<?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>

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

在我的情况下,我刚刚在我的自定义组件中实现了IFocusManagerContainer,一切正常

private var _defaultButton:IFlexDisplayObject = / default component /;

    public function get defaultButton():IFlexDisplayObject{
        return _defaultButton;
    }
    public function set defaultButton(value:IFlexDisplayObject):void{
        _defaultButton = value;
        ContainerGlobals.focusedContainer = null;
    }

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

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

PS:示例中的“处理程序”是通过mxml添加的,因此它没有参数。

这对我有用。 在弹出窗口的creationComplete事件中:

private function onCreationComplete():void
{
  callLater(this.commentTextInput.setFocus);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM