응용 프로그램 표시 변경 처리

AIR 2.6 이상

AIR에서는 응용 프로그램 설명자의 softKeyboardBehavior 요소를 none 으로 설정하여 소프트 키보드를 표시하는 것과 관련된 기본 패닝 및 크기 조절 비헤이비어를 해제할 수 있습니다.

<softKeyboardBehavior>none</softKeyboardBehavior>

자동 비헤이비어를 해제하면 응용 프로그램 디스플레이에 맞게 필요한 조정을 수행하는 동작을 응용 프로그램에서 처리해야 합니다. softKeyboardActivate 이벤트는 키보드가 열릴 때 전달됩니다. softKeyboardActivate 이벤트가 전달되는 경우 열린 키보드에 의해 가려진 영역의 크기는 스테이지의 softKeyboardRect 속성에 들어 있습니다. 이러한 크기를 사용하여 내용을 이동하거나 내용의 크기를 조절하면 키보드가 열린 상태에서 사용자가 입력하는 동안 내용이 올바르게 표시됩니다. 키보드가 닫히면 softKeyboardRect 사각형의 크기는 모두 0이 됩니다.

키보드가 닫히면 softKeyboardDeactivate 이벤트가 전달되고 응용 프로그램 표시를 일반으로 되돌릴 수 있습니다.

package  {        
    import flash.display.MovieClip; 
    import flash.events.SoftKeyboardEvent; 
    import flash.events.Event; 
    import flash.display.StageScaleMode; 
    import flash.display.StageAlign; 
    import flash.display.InteractiveObject; 
    import flash.text.TextFieldType; 
    import flash.text.TextField; 
     
    public class PanningExample extends MovieClip { 
                     
        private var textField:TextField = new TextField(); 
         
        public function PanningExample() {             
            this.stage.scaleMode = StageScaleMode.NO_SCALE; 
            this.stage.align = StageAlign.TOP_LEFT; 
             
            textField.y = this.stage.stageHeight - 201; 
            textField.width = this.stage.stageWidth; 
            textField.height = 200; 
            textField.type = TextFieldType.INPUT; 
            textField.border = true; 
            textField.wordWrap = true; 
            textField.multiline = true; 
             
            this.addChild( textField ); 
             
            //track soft keyboard and stage resize events 
            textField.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, onKeyboardChange ); 
            textField.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, onKeyboardChange ); 
            this.stage.addEventListener( Event.RESIZE, onDisplayAreaChange ); 
        } 
     
        private function onDisplayAreaChange( event:Event ):void 
        { 
            textField.y = this.stage.stageHeight - 201; 
            textField.width = this.stage.stageWidth; 
        } 
         
        private function onKeyboardChange( event:SoftKeyboardEvent ):void 
        { 
            var field:InteractiveObject = textField; 
            var offset:int = 0; 
 
            //if the softkeyboard is open and the field is at least partially covered 
            if( (this.stage.softKeyboardRect.y != 0) && (field.y + field.height > this.stage.softKeyboardRect.y) ) 
                offset = field.y + field.height - this.stage.softKeyboardRect.y; 
                 
            //but don't push the top of the field above the top of the screen 
            if( field.y - offset < 0 ) offset += field.y - offset; 
             
            this.y = -offset;             
        }         
    } 
}
참고: Android에서는 전체 화면 모드를 포함하여 운영 체제에서 키보드의 정확한 크기를 사용할 수 없는 경우가 있습니다. 이러한 경우에는 예상 크기가 지정됩니다. 또한 가로 방향에서는 모든 텍스트 입력에 기본 전체 화면 IME 키보드가 사용됩니다. 이 IME 키보드는 텍스트 입력 필드가 기본 제공되며 전체 스테이지를 가립니다. 스크린을 채우지 않도록 가로 키보드를 표시할 수는 없습니다.