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.