Tratamento de mudanças de exibição do aplicativo

AIR 2.6 e posterior

No AIR, você pode desativar o panorama padrão e redimensionar o comportamento associado à ativação do teclado virtual, definindo o elemento softKeyboardBehavior , no descritor do aplicativo, como none :

<softKeyboardBehavior>none</softKeyboardBehavior>

Quando você desativar o comportamento automático, é responsabilidade do seu aplicativo fazer quaisquer ajustes necessários para a exibição do aplicativo. Um evento softKeyboardActivate é despachado quando o teclado é aberto. No momento em que o evento softKeyboardActivate é enviado, a propriedade softKeyboardRect do palco contém as dimensões da área obscurecida pelo teclado aberto. Use essas dimensões para mover ou redimensionar seu conteúdo, de maneira que esse seja exibido adequadamente enquanto o teclado é aberto e o usuário digita. (Quando o teclado está fechado, as dimensões do retângulo softKeyboardRect são todas zero.)

Quando o teclado é fechado, um evento softKeyboardDeactivate é enviado, e é possível voltar a exibição do aplicativo ao normal.

package  {        
    import flash.display.MovieClip; 
    import flash.events.SoftKeyboardEvent; 
    import flash.events.Event; 
    import flash.display.StageScaleMode; 
    import flash.display.StageAlign; 
    import flash.display.InteractiveObject; 
    import flash.text.TextFieldType; 
    import flash.text.TextField; 
     
    public class PanningExample extends MovieClip { 
                     
        private var textField:TextField = new TextField(); 
         
        public function PanningExample() {             
            this.stage.scaleMode = StageScaleMode.NO_SCALE; 
            this.stage.align = StageAlign.TOP_LEFT; 
             
            textField.y = this.stage.stageHeight - 201; 
            textField.width = this.stage.stageWidth; 
            textField.height = 200; 
            textField.type = TextFieldType.INPUT; 
            textField.border = true; 
            textField.wordWrap = true; 
            textField.multiline = true; 
             
            this.addChild( textField ); 
             
            //track soft keyboard and stage resize events 
            textField.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, onKeyboardChange ); 
            textField.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, onKeyboardChange ); 
            this.stage.addEventListener( Event.RESIZE, onDisplayAreaChange ); 
        } 
     
        private function onDisplayAreaChange( event:Event ):void 
        { 
            textField.y = this.stage.stageHeight - 201; 
            textField.width = this.stage.stageWidth; 
        } 
         
        private function onKeyboardChange( event:SoftKeyboardEvent ):void 
        { 
            var field:InteractiveObject = textField; 
            var offset:int = 0; 
 
            //if the softkeyboard is open and the field is at least partially covered 
            if( (this.stage.softKeyboardRect.y != 0) && (field.y + field.height > this.stage.softKeyboardRect.y) ) 
                offset = field.y + field.height - this.stage.softKeyboardRect.y; 
                 
            //but don't push the top of the field above the top of the screen 
            if( field.y - offset < 0 ) offset += field.y - offset; 
             
            this.y = -offset;             
        }         
    } 
}
Nota: No Android, existem circunstâncias, incluindo o modo tela cheia, nas quais as dimensões exatas do teclado não estão disponíveis no sistema operacional. Nesses casos, o tamanho é estimado. Do mesmo modo, nas orientações de paisagem, o teclado IME de tela cheia nativo é usado para todas as entradas de texto. Esse teclado IME possui um campo de entrada de texto incorporado e oculta o palco inteiro. Não existe maneira de ativar um teclado com orientação de paisagem sem preencher a tela.