2010-07-27 23 views
5

Próbuję mieć wyskakujące okienko z natychmiast edytowalnym polem tekstowym. Oznacza to, że użytkownik powinien móc wpisywać tekst w polu TextInput po wyświetleniu okna podręcznego.Ustawianie fokusu na wyskakującym wyskakującym okienku tekstowym

Problem polega na tym, że nie mogę skupić się na textInput. To, co się dzieje, polega na tym, że po naciśnięciu klawisza po raz pierwszy, tekst nie jest wstawiany, dopiero po naciśnięciu drugiego klawisza komponent uzyskuje ostrość, a użytkownik może pisać. Na przykład wpisanie "testu" po otwarciu wyskakującego menu powoduje wyświetlenie "est" ...

Z jakiegoś powodu komponent zyskuje ostrość tylko wtedy, gdy użytkownik jawnie go kliknie lub coś napisze. Programowe ustawienie ostrości nie działa.

Wszelkie pomysły/sugestie?

Kod:

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

masz źródło popup – Grumpy

Odpowiedz

2

Problemem było to, że uruchamiając połączenia kontekstowe za pomocą klawisza F10. F10 jest zarezerwowany dla systemu ... uruchomił program obsługi i utworzono wyskakujące okienko, ale w jakiś sposób aplikacja straciła ostrość. Użycie innego klucza to naprawiło. Jedynym zarezerwowanym kluczem jest F10. More about that

0

To zależy od tego, jak starają się to zrobić. Co działa na mnie operująca creationComplete Event popup:

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

PS: „obsługi” w przykładzie dodaje poprzez MXML więc nie ma parametrów.

+0

to nie zadziała zgodnie z oczekiwaniami ... –

+0

Z ciekawości co OS i przeglądarki używasz? –

0

Oto, co działa dla mnie. W przypadku creationComplete okna pop-up:

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

To działa ... problemem było coś zupełnie innego. Używałem klawisza F10, aby wywołać popup. Tak się składa, że ​​F10 jest zarezerwowany przez system. Używanie innego klucza działa dobrze. –

0

w moim przypadku właśnie realizowany IFocusManagerContainer w moim niestandardowego komponentu i wszystko działało w porządku

private var _defaultButton: IFlexDisplayObject =/domyślnym składnikiem /;

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