5

すぐに編集可能な TextInput を含むポップアップ ウィンドウを作成しようとしています。これは、ポップアップが表示されたら、ユーザーが TextInput 内に入力できる必要があることを意味します。

問題は、textInput に集中できないことです。最初にキーを押すと、テキストは挿入されず、2 番目のキーが押された後にのみ、コンポーネントがフォーカスを取得し、ユーザーが入力できるようになります。たとえば、ポップアップが開いたら「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
{
  callLater(this.commentTextInput.setFocus);
}
于 2010-08-31T18:55:50.057 に答える
0

それはあなたがそれをどのようにしようとするかにかかっています。私にとってうまくいくのは、ポップアップの creationComplete イベントを処理することです:

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

PS: この例の「ハンドラー」は mxml を介して追加されるため、パラメーターはありません。

于 2010-07-27T11:07:03.583 に答える