Contrôle du comportement du clavier virtuel

Le moteur d’exécution ouvre automatiquement le clavier virtuel lorsque l’utilisateur appuie dans un champ de texte ou un objet interactif spécialement configuré. A l’ouverture du clavier, le moteur d’exécution respecte les conventions de la plate-forme native en matière de panoramique et de redimensionnement du contenu de l’application, afin que l’utilisateur puisse visualiser le texte au fur et à mesure qu’il le tape.

A l’ouverture du clavier, l’objet cible d’action distribue les événements suivants dans l’ordre indiqué :

Evénement softKeyboardActivating : distribué juste avant que le clavier ne commence à se superposer à la scène. Si vous appelez la méthode preventDefault() de l’objet événement distribué, le clavier virtuel ne s’ouvre pas.

Evénement softKeyboardActivate : distribué au terme du traitement de l’événement softKeyboardActivating . Lorsque l’objet cible d’action distribue cet événement, la propriété softKeyboardRect de l’objet Stage a été mise à jour pour refléter la partie de la scène masquée par le clavier virtuel. Il est impossible d’annuler cet événement.

Remarque : en cas de changement de taille du clavier (si l’utilisateur modifie le type du clavier, par exemple), l’objet cible d’action distribue un second événement softKeyboardActivate.

Evénement softKeyboardDeactivate : distribué lors de la fermeture du clavier virtuel, quel qu’en soit le motif. Il est impossible d’annuler cet événement.

L’exemple suivant ajoute deux objets TextField sur la scène. L’objet TextField supérieur interdit l’affichage du clavier lorsque vous touchez le champ et le ferme s’il est déjà affiché. L’objet TextField inférieur illustre le comportement par défaut. L’exemple indique les événements de clavier logiciel distribués par les deux champs de texte.

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