In AIR, potete disattivare la panoramica e il ridimensionamento predefiniti associati con una tastiera virtuale impostando l'elemento
softKeyboardBehavior
nel descrittore dell'applicazione su
none
:
<softKeyboardBehavior>none</softKeyboardBehavior>
Quando si disattiva il comportamento automatico, è compito dell'applicazione apportare le modifiche necessarie alla visualizzazione dell'applicazione. Un evento softKeyboardActivate viene inviato quando la tastiera si apre. Quando si invia l'evento
softKeyboardActivate
, la proprietà
softKeyboardRect
dello stage contiene le dimensioni dell'area oscurata aprendo la tastiera. Utilizzate queste dimensioni per spostare o ridimensionare il contenuto in modo che venga visualizzato correttamente quando la tastiera viene aperta e l'utente inizia a digitare. (Quando la tastiera è chiusa, le dimensioni del rettangolo softKeyboardRect sono tutte zero.)
Quando la tastiera si chiude, viene inviato un evento
softKeyboardDeactivate
ed è possibile ripristinare la normale visualizzazione dell'applicazione.
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;
}
}
}
Nota:
su Android, esistono circostanze, compresa la modalità a schermo intero, in cui le dimensioni esatte della tastiera non sono disponibili dal sistema operativo. In questi casi, la dimensione è stimata. Inoltre, negli orientamenti orizzontali, la tastiera IME a schermo intero nativa è utilizzata per tutte le immissioni di testo. Questa tastiera IME dispone di un campo di immissione testo integrato e oscura l'intero stage. Non c'é modo di visualizzare una tastiera orizzontale che non riempie lo schermo.