Control del comportamiento del teclado virtual

El motor de ejecución abre automáticamente el teclado virtual cuando el usuario toca dentro de un campo de texto o un objeto interactivo configurado de forma especial. Cuando se abre el teclado, el motor de ejecución sigue las convenciones de la plataforma nativa a la hora de desplazar y cambiar el tamaño del contenido de la aplicación para que el usuario pueda ver el texto conforme escribe.

Cuando se abre el teclado, el objeto seleccionado distribuye los siguientes eventos en secuencia:

Evento softKeyboardActivating : se distribuye inmediatamente antes de que el teclado comience a elevarse sobre el escenario. Si se llama al método preventDefault() del objeto de evento distribuido, el teclado virtual no se abrirá.

Evento softKeyboardActivate : se distribuye un vez que el control del evento softKeyboardActivating se haya completado. Cuando el objeto seleccionado distribuye este evento, la propiedad softKeyboardRect del objeto Stage se ha actualizado para reflejar el área del escenario oscurecida por el teclado virtual. Este evento no se puede cancelar.

Nota: si el teclado cambia de tamaño como, por ejemplo, cuando el usuario cambia el tipo de teclado, el objeto seleccionado distribuye un segundo evento softKeyboardActivate.

Evento softKeyboardDeactivate : se distribuye cuando el teclado virtual se cierra por cualquier motivo. Este evento no se puede cancelar.

El siguiente ejemplo añade dos objetos TextField en el escenario. El objeto TextField superior evita que el teclado se eleve cuando se toca el campo y lo cierra si ya se ha elevado. El objeto TextField inferior muestra el comportamiento predeterminado. El ejemplo indica los eventos de teclado de pantalla distribuidos por ambos campos de texto.

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