TextAreaにタブ(TAB)キーを入力する

TextAreaへのTAB入力時には、デフォルトの振る舞いだと、フォーカスが他のコンポーネントに移動してしまいますので、次の処理を行います。

  • カーソル位置に'\t'を入力
  • カーソル位置を1文字分、後ろに移動
    • 範囲選択状態から入力すると、選択中の内容は削除されるのでselectionBeginIndexを使います
  • イベントのデフォルト動作をキャンセル(Event.preventDefault()をコール)

以下のkeyDownはTextAreaにリスナー登録するメソッドの例です。

private function keyDown(ev:KeyboardEvent):void {
  if (ev.keyCode == Keyboard.TAB) {
    var newText:String = text.slice(0, selectionBeginIndex);
    newText += '\t';
    newText += text.slice(selectionEndIndex);
    text = newText;
    setSelection(selectionBeginIndex + 1, selectionBeginIndex+ 1);
    ev.preventDefault();
  }
}