【问题标题】:How do you programmatically move the caret of a Flex TextArea to the end?您如何以编程方式将 Flex TextArea 的插入符号移到末尾?
【发布时间】:2023-10-08 04:48:01
【问题描述】:

在从我的代码中附加一些文本后,我试图将 Flex TextArea 中的插入符号移到末尾。我查看了 TextArea 及其底层 TextField 的参考文档,但似乎没有提供处理此问题的方法。

我尝试过的一种方法是将焦点设置到文本区域并调度 KeyUp KeyboardEvent 并将事件的键代码设置为“结束”键,但这不起作用。

关于如何做到这一点的任何想法?

谢谢。

【问题讨论】:

    标签: apache-flex flex3 textarea textfield caret


    【解决方案1】:

    试试这个

    textArea.selectionBeginIndex = textArea.length;
    textArea.selectionEndIndex = textArea.length;
    

    【讨论】:

    • 太棒了!这很好用,谢谢。之后我要做的就是 textArea.setFocus()
    【解决方案2】:

    对于寻找 Spark 组件方式来执行此操作的人,Flex 4.5,请使用 selectRange(anchorIndex, activeIndex)

    【讨论】:

      【解决方案3】:

      要将插入符号设置在 textArea 中的任何位置,您需要做的就是

      textArea.setSelection(beginIndex, endIndex);

      如果您将 beginIndex 和 endIndex 设置为相同的值(在您的情况下为 textArea.text.length),插入符号将放置在该位置。如果将其设置为不同的值,则该范围内的文本将突出显示。

      【讨论】:

        【解决方案4】:

        相信你可以直接用

        设置textarea的滚动条
        verticalScrollPosition : Number
        textArea.verticalScrollPosition(i);
        

        【讨论】:

          【解决方案5】:

          @Paul Stewart verticalScrollPosition 是属性而不是方法,因此您必须像使用字段一样使用它,例如:

          var newPosition:NUmber = 1;
          textArea.verticalScrollPosition = newPosition;
          

          与 selectionBeginIndex/selectionEndIndex 相比,使用它的优势在于您不必设置焦点。

          【讨论】:

            【解决方案6】:

            在TextArea添加文本后只需添加以下代码:

            textArea.verticalScrollPosition = textArea.maxVerticalScrollPosition;
            

            【讨论】: