Управление поведением виртуальной клавиатуры

Среда выполнения автоматически открывает виртуальную клавиатуру, когда пользователь касается текстового поля или специально настроенного интерактивного объекта. При открытии клавиатуры среда выполнения следует стандартам платформы для панорамирования и изменения размера содержимого приложения, чтобы пользователь мог видеть вводимый им текст.

При открытии клавиатуры объект с фокусом последовательно отправляет следующие события:

Cобытие softKeyboardActivating — отправляется непосредственно перед появлением клавиатуры в рабочей области. Если вызвать метод preventDefault() из отправленного объекта события, виртуальная клавиатура не откроется.

Cобытие softKeyboardActivate — отправляется после завершения обработки события softKeyboardActivating . Когда объект с фокус отправляет это событие, в свойстве softKeyboardRect объекта Stage обновляются сведения о части рабочей области, занятой виртуальной клавиатурой. Это событие нельзя отменить.

Примечание. При изменении размера клавиатуры, например, когда пользователь изменяет ее тип, объект с фокусом отправляет второе событие softKeyboardActivate.

Cобытие 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 ); 
    } 
} 
}