Flash在移动设备上控制虚拟键盘

移动设备(如手机和平板电脑)通常提供一种虚拟的软件键盘而不是物理键盘。使用 Flash API 中的类可以执行以下操作:
1.检测虚拟键盘何时开启和关闭。
2.阻止键盘开启。
3.确定被虚拟键盘覆盖的舞台区域。
4.创建获取焦点时开启键盘的交互对象。(iOS 上的 AIR 应用程序不支持此功能)

(仅限 AIR)禁用自动平移行为,以便应用程序可以修改自己的显示以适应键盘。

控制虚拟键盘的行为

当用户在某个文本字段或特别配置的交互式对象内点击时,运行时会自动打开虚拟键盘。当该键盘打开时,运行时会遵从本机平台惯例来平移应用程序内容以及调整其大小,以便所有用户在键入文本的过程中可以看到这些文本。 

当键盘打开时,具有焦点的对象会逐一调度以下事件:

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 ); 
    } 
} 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值