가상 키보드 비헤이비어 제어

사용자가 텍스트 필드 또는 특별 구성된 대화형 객체의 안쪽을 누르면 런타임이 가상 키보드를 자동으로 엽니다. 키보드가 열리면 런타임은 사용자가 자신이 입력한 텍스트를 볼 수 있도록 응용 프로그램 내용을 이동하고 크기를 조정할 때 기본 플랫폼 규칙에 따릅니다.

키보드가 열리면 포커스가 있는 객체가 다음 이벤트를 순서대로 전달합니다.

softKeyboardActivating 이벤트 - 키보드가 스테이지 위로 올라오기 직전에 전달됩니다. 전달된 이벤트 객체의 preventDefault() 메서드를 호출하면 가상 키보드가 열리지 않습니다.

softKeyboardActivate 이벤트 - softKeyboardActivating 이벤트 처리가 끝난 후 전달됩니다. 포커스가 있는 객체가 이 이벤트를 전달할 때 스테이지 객체의 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 ); 
    } 
} 
}