移动光标火花文本输入

时间:2012-03-06 15:15:08

标签: flex flex4 flex3 flex4.5 flexbuilder

我使用的是flex 4.5 我正在使用spark.components.TextInput控件。 可以根据用户选择动态地改变文本的值。 问题是,在用户写入textInput并更改文本的值后,光标位置返回到textInput的开头,所以如果用户想继续在textInput中输入.text,首先需要将光标移动到端。

如何控制光标位置?

由于

1 个答案:

答案 0 :(得分:1)

希望我能正确理解你的问题

我的工作流程

  • 收听selectionChange事件
  • selectionAnchorPosition为您提供最后的位置
  • 将此位置存储在临时变量
  • 发生了什么事,你把光标放在你想要的文本区域(button1_clickHandler)

我的代码示例

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            [Bindable]
            private var pos:Number = 0;

            protected function textinput1_selectionChangeHandler(event:FlexEvent):void
            {
                pos = TextInput(event.target).selectionAnchorPosition;
            }

            protected function button1_clickHandler(pos:Number):void
            {
                ti.setFocus();  
                ti.selectRange(pos,pos);            
            }

        ]]>
    </fx:Script>

    <s:layout>
        <s:VerticalLayout />
    </s:layout>

    <s:TextInput id="ti" text="abces"  selectionChange="textinput1_selectionChangeHandler(event)"/>

    <s:Label  text="{'lastCursorPos ' + pos}"/>

    <s:Button label="Set pos 1" click="button1_clickHandler(1)" />
    <s:Button label="Set pos 5" click="button1_clickHandler(5)" />
    <s:Button label="Set pos 15" click="button1_clickHandler(15)" />
</s:Application>