仮想キーボードの動作の制御

ユーザーがテキストフィールドの内部や、特別に設定されたインタラクティブオブジェクトをタップすると、自動的に仮想キーボードが開きます。キーボードが開くと、ユーザーが入力中のテキストを参照できるように、ネイティブプラットフォームの規則に従って、アプリケーションコンテンツのパンとサイズ変更が実行されます。

キーボードが開くと、フォーカスのあるオブジェクトから次のイベントが順に送出されます。

softKeyboardActivating イベント - キーボードがステージの上に表示され始める直前に送出されます。送出されたイベントオブジェクトの preventDefault() メソッドを呼び出すと、仮想キーボードは開きません。

softKeyboardActivate イベント - softKeyboardActivating イベントの処理の完了後に送出されます。フォーカスのあるオブジェクトからこのイベントが送出されると、Stage オブジェクトの softKeyboardRect プロパティが、仮想キーボードによって隠されたステージの領域を反映するよう更新されます。このイベントはキャンセルできません。

注意: ユーザーがキーボードタイプを変更するなど、キーボードのサイズが変更されると、フォーカスのあるオブジェクトから 2 つ目の softKeyboardActivate イベントが送出されます。

softKeyboardDeactivate イベント - 仮想キーボードが何らかの理由で閉じたときに送出されます。このイベントはキャンセルできません。

次の例では、ステージ上に 2 つの 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 ); 
    } 
} 
}