Controllo del comportamento della tastiera virtuale

In fase di esecuzione, una tastiera virtuale viene aperta automaticamente quando l'utente tocca un campo di testo o un oggetto interattivo configurato in maniera speciale. Quando la tastiera si apre, il runtime segue le convenzioni della piattaforma nativa in termini di panoramica e ridimensionamento del contenuto dell'applicazione, in modo che il testo immesso dall'utente sia visibile durante la digitazione.

Quando la tastiera si apre, l'oggetto attivo invia i seguenti eventi in sequenza:

Evento softKeyboardActivating : inviato subito prima che la tastiera inizi a sollevarsi sopra lo stage. Se chiamate il metodo preventDefault() dell'oggetto evento inviato, la tastiera virtuale non si apre.

Evento softKeyboardActivate : inviato al termine della gestione dell'evento softKeyboardActivating . Quando l'oggetto attivo invia questo evento, la proprietà softKeyboardRect dell'oggetto Stage è stata aggiornata per riflettere l'area dello stage oscurata dalla tastiera virtuale. Questo evento non può essere annullato.

Nota: se, ad esempio le dimensioni della tastiera cambiano quando l'utente cambia il tipo di tastiera, l'oggetto attivo invia un secondo evento softKeyboardActivate.

Evento softKeyboardDeactivate : inviato quando la tastiera virtuale viene chiusa per qualsiasi motivo. Questo evento non può essere annullato.

L'esempio seguente aggiunge due oggetti TextField sullo stage. L'oggetto TextField superiore impedisce il sollevamento della tastiera quando si tocca il campo e la chiude se è già sollevata. L'oggetto TextField inferiore dimostra il comportamento predefinito. L'esempio segnala gli eventi tastiera virtuale inviati da entrambi i campi.

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