Среда выполнения автоматически открывает виртуальную клавиатуру, когда пользователь касается текстового поля или специально настроенного интерактивного объекта. При открытии клавиатуры среда выполнения следует стандартам платформы для панорамирования и изменения размера содержимого приложения, чтобы пользователь мог видеть вводимый им текст.
При открытии клавиатуры объект с фокусом последовательно отправляет следующие события:
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 );
}
}
}