-1

我正在尝试使用事件 keyDown 在富文本编辑器中添加选项卡键功能。为了清楚起见,在制表键上,我需要控件保持在同一个文本框中,前面有 '\t' 空格,而不是跳到下一个对象。我尝试的以下代码与 textArea 完美配合,但不适用于 RichTextEditor。我错过了什么吗?

<mx:RichTextEditor width="90%"
                   height="274"
                   id="richTextArea"
                   htmlText="{chapterContent}" keyDown="onTabPress(event);"/>

然后在脚本级别处理键盘 Tab 键,如图所示。

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

感谢所有的帮助。

4

2 回答 2

0

有同样的问题。它对我有用,因为使用的是 KEY_UP 事件而不是 KEY_DOWN 事件。

我没有将 Focus 移回,而是直接将 Focus 设置为 RichTextEditor 的 textArea:

<mx:RichTextEditor id="rte_txt" />
rte_txt.textArea.setFocus();

但是使用 Focus Manager 也应该可以。

于 2014-06-12T16:50:15.383 回答
0

尝试将 '\t' 字符插入 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);"/>
于 2017-02-02T15:28:58.317 回答