0

通常、フォームとポップアップは、表示されたばかりのときはフォーカスが設定されていません。明らかな解決策は、コンポーネントの作成完了イベントで最初の入力にフォーカスを設定することでした。これにより、タブやスペースなどのキーボード ショートカットが機能し始めます。

問題は、作成が完了しても万能薬ではないことです。その時点で要素にフォーカスできない場合があり、なぜそれが起こるのかわかりません。

render イベントはフォーカスを確保しますが、非常に単純な目的のためにディスパッチしすぎます。

コンポーネントが常にフォーカス可能になる準備ができているのはどの時点ですか?

編集:起動時のフォーカスを取得するのに苦労しているコンポーネントはTitleWindow、マウス クリック イベントとキーボード イベントの 2 つの方法でポップできる です。クリックでタイトウィンドウが表示されると、作成完了イベントで最初の入力がフォーカスされるが、キーボードイベントで表示されるとフォーカスが入らない...

今では、次のコードで動作するようになりました:

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

しかし、表示されている方法がこれと関係があるとは思えません...なぜなら、他のいくつかもTitleWindowこのように表示されていて、それらは問題ないからです.

それで、それは何でしょうか?

4

1 に答える 1

0

render イベントはフォーカスを確保しますが、非常に単純な目的のためにディスパッチしすぎます。

これが本当なら、これを試してみませんか:

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 に焦点を当てる必要があるため、ハックのようなものかもしれませんが、おそらくうまくいくでしょう。

于 2013-04-14T22:02:46.877 に答える