AIR'de, uygulama tanımlayıcısındaki
softKeyboardBehavior
öğesini
none
olarak ayarlayarak, yazılım klavyesini kaldırmayla ilişkili varsayılan kaydırma ve yeniden boyutlandırma işlevlerini kapatabilirsiniz.
<softKeyboardBehavior>none</softKeyboardBehavior>
Otomatik davranışı devre dışı bıraktığınızda, uygulama ekranındaki gerekli ayarlamaları yapmak uygulamanızın sorumluluğundadır. Klavye açıldığında bir softKeyboardActivate olayı gönderilir.
softKeyboardActivate
olayı gönderildiğinde, sahne alanının
softKeyboardRect
özelliği açık klavye tarafından gizlenen alanın boyutlarını içerir. Bu boyutları, klavye açıkken veya kullanıcı yazı yazarken düzgün bir şekilde görüntülenmesini sağlayacak şekilde içeriğinizi taşımak veya yeniden boyutlandırmak için kullanın. (Klavye kapalıyken softKeyboardRect dikdörtgeninin tüm boyutları sıfırdır.)
Klavye kapandığında bir
softKeyboardDeactivate
olayı gönderilir ve uygulama ekranını normale döndürebilirsiniz.
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;
}
}
}
Not:
Android'de, klavyenin tam boyutlarının işletim sisteminde bulunmadığı tam ekran modunu da içeren durumlar vardır. Bu durumlarda boyut tahmin edilir. Ayrıca, yatay yönlendirmelerde, tüm metin girişleri için yerel tam ekran IME klavyesi kullanılır. Bu IME klavyesi yerleşik metin girişi alanına sahiptir ve tüm sahne alanını gizler. Ekranı doldurmayan bir yatay klavyeyi görüntülemenin bir yolu yoktur.