在 AIR 中,可以通过将应用程序描述符中的
softKeyboardBehavior
元素设置为
none
来与关闭和开启软键盘相关的默认平移和调整大小行为。
<softKeyboardBehavior>none</softKeyboardBehavior>
在关闭自动行为后,由您的应用程序负责对应用程序显示的内容进行必要的调整。当打开键盘时将调度 softKeyboardActivate 事件。在调度
softKeyboardActivate
事件时,舞台的
softKeyboardRect
属性包含由打开的键盘覆盖的区域尺寸。使用这些尺寸来移动或调整内容的大小,以便在打开键盘和用户键入时正确显示内容。(当关闭键盘时,softKeyboardRect 矩形的尺寸全部为零。)
当关闭键盘时,会调度
softKeyboardDeactivate
事件,您可以将应用程序显示恢复成正常状态。
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;
}
}
}
注:
在 Android 上的某些情况(包括全屏模式)下,无法从操作系统获取键盘的精确尺寸。在这些情况下,大小是估计值。另外,在横向方向中,对所有文本输入使用本机全屏 IME 键盘。此 IME 键盘具有一个内置的文本输入字段,并覆盖整个舞台。无法显示不能填充屏幕的横向键盘。
|
|
|