在 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 鍵盤是內建的文字輸入欄位,會遮住整個舞台。您無法顯示沒有填滿螢幕的橫向鍵盤。
|
|
|