Ś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 );
}
}
}