在富文本编辑器中添加Tab键功能(Flex 3)

时间:2013-05-20 20:02:46

标签: actionscript-3 flex3 mxml

我正在尝试使用事件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;
    }
}

感谢您的帮助。

2 个答案:

答案 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);"/>