In AIR können Sie das Standardverhalten zum Schwenken und zum Ändern der Größe, das beim Einblenden der Softwaretastatur auftritt, deaktivieren, indem Sie das
softKeyboardBehavior
-Element im Anwendungsdeskriptor auf
none
einstellen:
<softKeyboardBehavior>none</softKeyboardBehavior>
Wenn Sie das automatische Verhalten deaktivieren, ist die Anwendung dafür zuständig, die Anwendungsanzeige wie erforderlich anzupassen. Ein softKeyboardActivate-Ereignis wird beim Öffnen der Tastatur ausgelöst. Wenn das
softKeyboardActivate
-Ereignis ausgelöst wird, enthält die
softKeyboardRect
-Eigenschaft der Bühne die Abmessungen des Bereichs, der von der geöffneten Tastatur verdeckt wird. Ändern Sie die Position oder die Größe Ihres Inhalts anhand dieser Abmessungen, um sicherzustellen, dass der Inhalt richtig angezeigt wird, wenn die Tastatur geöffnet ist und der Benutzer Text eingibt. (Wenn die Tastatur geschlossen ist, betragen alle Abmessungen des softKeyboardRect-Rechtecks null.)
Beim Schließen der Tastatur wird ein
softKeyboardDeactivate
-Ereignis ausgelöst und Sie können wieder zur normalen Anwendungsanzeige zurückkehren.
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;
}
}
}
Hinweis:
Unter Android sind die genauen Abmessungen der Tastatur in bestimmten Situationen nicht vom Betriebssystem abrufbar. Dies ist beispielsweise im Vollbildmodus der Fall. In diesen Fällen wird die Größe geschätzt. Bei der Ausrichtung im Querformat wird die native IME-Tastatur im Vollbildmodus für jede Texteingabe verwendet. Diese IME-Tastatur hat ein integriertes Texteingabefeld und verdeckt die ganze Bühne. Es gibt keine Möglichkeit, eine Tastatur im Querformat anzuzeigen, die nicht den ganzen Bildschirm ausfüllt.