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(); } }