flex setFocus on creation complete

时间:2013-04-12 17:26:54

标签: actionscript-3 flex

通常,表单和弹出窗口在刚刚显示时没有焦点设置。显而易见的解决方案是将焦点设置为组件的创建完成事件中的第一个输入,因此键盘短切,如制表符和空格开始工作。

问题在于,创造完成不是灵丹妙药,有时候元素在那时不能集中精力,我不确定为什么会这样。

渲染事件将确保焦点,但为了一个非常简单的目的,它会调度过多。

在哪一点上,组件随时可以聚焦?

编辑:让我无法获得启动焦点的组件是TitleWindow,它可以通过两种方式加速,即鼠标点击事件和键盘事件。 通过单击显示tite窗口时,第一个输入将在创建完成事件中获得焦点,但是当通过键盘事件显示时,它不会...

到现在为止,我使用了以下代码:

private function titlewindow_creationCompleteHandler(e:FlexEvent):void{
    callLater( setTextInputFocus);
}
private function setTextInputFocus():void{
    txtPregunta.setFocus();
}

但是怀疑显示的方式与此有关...因为,其他一些TitleWindow也以这种方式显示,并且它们很好。

那可能是什么?

1 个答案:

答案 0 :(得分:0)

  

渲染事件将确保焦点,但为了一个非常简单的目的,它会调度过多。

如果这是真的那么为什么不试试这个:

private function titlewindow_creationCompleteHandler(e:FlexEvent):void{
    var callback : Function = function(re : Event) : void {
        titlewindow.removeEventHandler(RenderEvent.orsomething, callback);
        setTextInputFocus();
    };

    titlewindow.addEventHandler(RenderEvent.orsomething, callback);
}

可能是一种黑客攻击,因为它应该专注于creationComplete,但它可能会有效。