Sterowanie zachowaniem klawiatury wirtualnej

Środowisko wykonawcze automatycznie otwiera klawiaturę wirtualną, gdy użytkownik dotyka wnętrza pola tekstowego lub specjalnie skonfigurowanego obiektu interaktywnego. Gdy jest otwierana klawiatura, środowisko wykonawcze stosuje panoramowanie i zmiany rozmiaru zgodnie z konwencjami używanymi dla zawartości aplikacji na platformie macierzystej, tak aby użytkownik widział tekst podczas wpisywania.

Gdy jest otwierana klawiatura, aktywny obiekt wywołuje kolejno następujące zdarzenia:

Zdarzenie softKeyboardActivating jest wywoływane natychmiast po rozpoczęciu unoszenia klawiatury przed stołem montażowym. Wywołanie metody preventDefault() obiektu wywołanego zdarzenia spowoduje, że klawiatura wirtualna nie zostanie otwarta.

Zdarzenie softKeyboardActivate jest wywoływane po zakończeniu obsługi zdarzenia softKeyboardActivating . Aktywny obiekt wywołuje to zdarzenie po aktualizacji właściwości softKeyboardRect obiektu Stage w celu wskazania, jaki obszar stołu montażowego został zasłonięty przez klawiaturę wirtualną. Tego zdarzenia nie można anulować.

Uwaga: Zmiana rozmiaru klawiatury, na przykład w wyniku zmiany typu klawiatury przez użytkownika, powoduje wywołanie przez aktywny obiekt kolejnego zdarzenia softKeyboardActivate.

Zdarzenie softKeyboardDeactivate jest wywoływane w chwili zamknięcia klawiatury wirtualnej (niezależnie od przyczyny). Tego zdarzenia nie można anulować.

W poniższym przykładzie do stołu montażowego są dodawane dwa obiekty TextField. Górny obiekt TextField zapobiega uniesieniu klawiatury w przypadku dotknięciu pola oraz zamyka ją, jeśli jest już uniesiona. Dolny obiekt TextField demonstruje zachowanie domyślne. W przykładzie są zgłaszane zdarzenia dotyczące klawiatury programowej wywoływane przez oba pola tekstowe.

package 
{ 
import flash.display.Sprite; 
import flash.text.TextField; 
import flash.text.TextFieldType; 
import flash.events.SoftKeyboardEvent; 
public class SoftKeyboardEventExample extends Sprite 
{ 
    private var tf1:TextField = new TextField(); 
    private var tf2:TextField = new TextField(); 
     
    public function SoftKeyboardEventExample() 
    { 
        tf1.width = this.stage.stageWidth; 
        tf1.type = TextFieldType.INPUT; 
        tf1.border = true; 
        this.addChild( tf1 ); 
         
        tf1.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING, preventSoftKe    yboard ); 
        tf1.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, preventSoftKe    yboard ); 
        tf1.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, preventSoftKeyboard ); 
         
        tf2.border = true; 
        tf2.type = TextFieldType.INPUT; 
        tf2.width = this.stage.stageWidth; 
        tf2.y = tf1.y + tf1.height + 30; 
        this.addChild( tf2 ); 
     
        tf2.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING, allowSoftKeyboard ); 
        tf2.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, allowSoftKeyboard ); 
        tf2.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, allowSoftKeyboard); 
    } 
     
    private function preventSoftKeyboard( event:SoftKeyboardEvent ):void 
    { 
            event.preventDefault(); 
            this.stage.focus = null; //close the keyboard, if raised 
            trace( "tf1 dispatched: " + event.type + " -- " + event.triggerType ); 
    } 
    private function allowSoftKeyboard( event:SoftKeyboardEvent )    :void 
    { 
            trace( "tf2 dispatched: " + event.type + " -- " + event.triggerType ); 
    } 
} 
}