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