我正在尝试使用事件keyDown在富文本编辑器中添加Tab键功能。为了清楚起见,在Tab键上,我需要控件保持在同一文本框中,前面有'\ t'空格而不是跳到下一个对象。我尝试过的以下代码与textArea完美配合,但与RichTextEditor不兼容。我错过了什么吗?
<mx:RichTextEditor width="90%"
height="274"
id="richTextArea"
htmlText="{chapterContent}" keyDown="onTabPress(event);"/>
然后在脚本级别处理键盘选项卡键,如图所示。
private function onTabPress(eventkey:KeyboardEvent):void
{
switch(eventkey.keyCode)
{
case Keyboard.TAB:
var indexBegin:int = eventkey.currentTarget.selectionBeginIndex;
var range:TextRange = new TextRange(eventkey.currentTarget as UIComponent,false,indexBegin,indexBegin);
range.text = "\t";
var indexNext:int = eventkey.currentTarget.selectionBeginIndex+range.text.length;
eventkey.currentTarget.setSelection(indexNext, indexNext);
focusManager.moveFocus(FocusRequestDirection.BACKWARD);
break;
}
}
感谢您的帮助。
答案 0 :(得分:0)
有同样的问题。它对我有用,就像使用KEY_UP事件而不是KEY_DOWN事件一样。
我没有将Focus移回,而是将Focus直接设置为RichTextEditor的textArea:
<mx:RichTextEditor id="rte_txt" />
rte_txt.textArea.setFocus();
但使用Focus Manager也应该有效。
答案 1 :(得分:0)
尝试插入&#39; \ t&#39;似乎存在一些问题。将字符转换为RichTextEditor ...但是,RichTextEditor事件目标具有公开的textArea组件。您的代码在textArea中运行良好,因此您可以稍微更改目标。
这是一个轻微的编辑,但以下代码适用于我:
private function onTabPressed(event:KeyboardEvent):void {
switch(event.keyCode) {
case Keyboard.TAB :
var indexBegin:int = event.currentTarget.textArea.selectionBeginIndex;
var range:TextRange = new TextRange(event.currentTarget.textArea as UIComponent, false, indexBegin, indexBegin);
range.text = "\t";
var indexNext:int = event.currentTarget.textArea.selectionBeginIndex + range.text.length;
event.currentTarget.textArea.setSelection(indexNext, indexNext);
focusManager.moveFocus(FocusRequestDirection.BACKWARD);
break;
}
}
使用:
<mx:RichTextEditor width="90%"
height="274"
id="richTextArea"
htmlText="{chapterContent}"
keyDown="onTabPress(event);"/>