如何在 Flex 4.5 的 TextInput 中控制光标(克拉)位置

Posted

技术标签:

【中文标题】如何在 Flex 4.5 的 TextInput 中控制光标(克拉)位置【英文标题】:How to control cursor (carat) position in TextInput in Flex 4.5 【发布时间】:2011-11-18 02:39:18 【问题描述】:

我需要处理图表,然后将它们即时转换为正确的 unicode 表示。例如当用户输入:

Sx

我的应用需要将其替换为:

Ŝ

现在,我已经能够进行替换,没有问题。但问题是,一旦我完成了替换,光标就会转到文本框的开头而不是结尾。当我试图即时更新用户的文本时,这显然是行不通的。

我怎样才能得到它,以便在我替换 TextInput 框中的文本后,光标在右侧而不是左侧?

【问题讨论】:

【参考方案1】:

找到了解决办法。

您所要做的就是不要更新整个文本,而是擦除当前内容然后使用:

textInput.appendText()

希望这对其他人有帮助:)

【讨论】:

【参考方案2】:

setSelection 方法是设置光标的方式

textInput.setSelection(textInput.text.length, textInput.text.length);

您可以使用TextInput.selectionAnchorPosition 获取当前选择的开始,使用TextInput.selectionAnchorPosition 获取选择的结束

【讨论】:

selectionActivePosition 是一个只读属性,因此不幸的是,您实际上无法将其设置为任何内容。我发现了一些这样的例子,但显然我无法让它们工作:-/【参考方案3】:

看看这个 SO 问题:How do you programmatically move the caret of a Flex TextArea to the end?

如果您使用的是 textArea,那么这将起作用(来自所选答案):

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

【讨论】:

我没有使用文本区域。我想我可以尝试添加单行文本区域...【参考方案4】:

对于来这里寻求 Spark textInput 解决方案的人来说,这是一种方式:

textInput.selectRange(textInput.text.length, textInput.text.length);

【讨论】:

以上是关于如何在 Flex 4.5 的 TextInput 中控制光标(克拉)位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flex 3 中的 TextInput 上的 keyDownHandler 上设置文本属性

如何允许用户在 Flex TextInput 控件中键入 TAB 字符?

在 Flex 中处理 TextInput 的宽度和样式

flex textinput 最后限制百分比符号

Flex 3 - 来自 TextInput 的焦点输入/输出

Flex Mobile textInput 滚动文本滞后