사용자가 텍스트 필드 또는 특별 구성된 대화형 객체의 안쪽을 누르면 런타임이 가상 키보드를 자동으로 엽니다. 키보드가 열리면 런타임은 사용자가 자신이 입력한 텍스트를 볼 수 있도록 응용 프로그램 내용을 이동하고 크기를 조정할 때 기본 플랫폼 규칙에 따릅니다.
키보드가 열리면 포커스가 있는 객체가 다음 이벤트를 순서대로 전달합니다.
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 );
}
}
}