Steuern des Verhaltens von virtuellen Tastaturen

Die Laufzeit öffnet automatisch die virtuelle Tastatur, wenn der Benutzer in ein Textfeld oder auf ein speziell konfiguriertes, interaktives Objekt tippt. Wenn die Tastatur geöffnet wird, berücksichtigt die Laufzeit die Konventionen der nativen Plattform für das Verschieben und Ändern der Größe des Anwendungsinhalts, damit Benutzer den Text bei der Eingabe sehen können.

Wenn die Tastatur geöffnet wird, löst das Objekt, das den Fokus besitzt, die folgenden Ereignisse in der angegebenen Reihenfolge aus:

softKeyboardActivating -Ereignis – wird ausgelöst, unmittelbar bevor die Tastatur über der Bühne eingeblendet wird. Wenn Sie die preventDefault() -Methode des ausgelösten Ereignisobjekts aufrufen, wird die virtuelle Tastatur nicht geöffnet.

softKeyboardActivate -Ereignis – wird ausgelöst, nachdem die Verarbeitung des softKeyboardActivating -Ereignisses abgeschlossen ist. Wenn das Objekt, das den Fokus besitzt, dieses Ereignis auslöst, wurde die softKeyboardRect -Eigenschaft des Stage-Objekts aktualisiert, da nun ein Teil der Bühne von der virtuellen Tastatur verdeckt wird. Dieses Ereignis kann nicht abgebrochen werden.

Hinweis: Wenn die Größe der Tastatur sich ändert, beispielsweise weil der Benutzer den Tastaturtyp ändert, löst das Objekt, das den Fokus besitzt, ein zweites softKeyboardActivate-Ereignis aus.

softKeyboardDeactivate -Ereignis – wird ausgelöst, wenn die virtuelle Tastatur geschlossen wird. Dieses Ereignis kann nicht abgebrochen werden.

Im folgenden Beispiel werden zwei TextField-Objekte auf der Bühne hinzugefügt. Das obere TextField-Objekt verhindert, dass die Tastatur eingeblendet wird, wenn Sie auf das Feld tippen, und schließt die Tastatur, wenn sie bereits eingeblendet wurde. Das untere TextField-Objekt zeigt das Standardverhalten. Das Beispiel zeigt die Ereignisse der virtuellen Tastatur, die von beiden Textfeldern ausgelöst werden.

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