当用户在某个文本字段或特别配置的交互式对象内点击时,运行时会自动打开虚拟键盘。当该键盘打开时,运行时会遵从本机平台惯例来平移应用程序内容以及调整其大小,以便所有用户在键入文本的过程中可以看到这些文本。
当键盘打开时,具有焦点的对象会逐一调度以下事件:
softKeyboardActivating
事件 — 在键盘开始上浮到舞台上方前的一刹那调度该事件。如果您调用已调度事件对象的
preventDefault()
方法,则虚拟键盘不会打开。
softKeyboardActivate
事件 — 在完成
softKeyboardActivating
事件处理后调度该事件。当具有焦点的对象调度此事件时,Stage 对象的
softKeyboardRect
属性已更新,以反映被虚拟键盘遮住的舞台区域。无法取消此事件。
注:
如果键盘更改大小,例如,当用户更改键盘类型时,具有焦点的对象会再次调度 softKeyboardActivate 事件。
softKeyboardDeactivate
事件 — 当虚拟键盘因任意原因关闭时调度该事件。无法取消此事件。
下面的示例在舞台上添加两个 TextField 对象。当您点击位于上方的 TextField 时,该字段会阻止键盘浮出;如果键盘已浮出,则关闭键盘。位于下方的 TextField 演示默认的行为。此示例报告由这两个文本字段同时调度的软键盘事件。
package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.events.SoftKeyboardEvent;
public class SoftKeyboardEventExample extends Sprite
{
private var tf1:TextField = new TextField();
private var tf2:TextField = new TextField();
public function SoftKeyboardEventExample()
{
tf1.width = this.stage.stageWidth;
tf1.type = TextFieldType.INPUT;
tf1.border = true;
this.addChild( tf1 );
tf1.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING, preventSoftKe yboard );
tf1.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, preventSoftKe yboard );
tf1.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, preventSoftKeyboard );
tf2.border = true;
tf2.type = TextFieldType.INPUT;
tf2.width = this.stage.stageWidth;
tf2.y = tf1.y + tf1.height + 30;
this.addChild( tf2 );
tf2.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING, allowSoftKeyboard );
tf2.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, allowSoftKeyboard );
tf2.addEventListener( SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, allowSoftKeyboard);
}
private function preventSoftKeyboard( event:SoftKeyboardEvent ):void
{
event.preventDefault();
this.stage.focus = null; //close the keyboard, if raised
trace( "tf1 dispatched: " + event.type + " -- " + event.triggerType );
}
private function allowSoftKeyboard( event:SoftKeyboardEvent ) :void
{
trace( "tf2 dispatched: " + event.type + " -- " + event.triggerType );
}
}
}