Pregunta

Estoy poblar un campo de texto mediante programación y desplazarse a la maxScrollH medida que se añade el nuevo texto que el usuario pueda ver la progresión de texto. Esto funciona bien, hasta que haga clic en el campo de texto, que establece scrollH de nuevo a 0 y coloca el cursor en el texto en la posición equivalente.

textField.setSelection( text.length, text.length ); //sets the caretIndex/selection to the end
textField.scrollH = textField.maxScrollH; //scrolls to max

este es el código que estoy usando para desplazarse cuando la propiedad de texto textField se actualiza. He intentado añadir un oyente al evento click en el campo de texto, que funciona de una manera, pero provoca un salto visible.

override protected function createChildren() : void
{
    super.createChildren();
    textField.addEventListener(MouseEvent.CLICK, handleTextFieldClick, false, 0, true);
}

protected function handleTextFieldClick(event:MouseEvent):void
{
    textField.scrollH = currentTextFieldScrollPosition; //stored scrollH value
    trace(textField.scrollH);
}

Mi conjetura es que hay una posición de desplazamiento se calcula o en algún lugar almacenado que no puedo encontrar.

¿Fue útil?

Solución

El TextInput flex establece la selección de la textField:

/**
 *  @private
 *  Gets called by internal field so we draw a focus rect around us.
 */
override protected function focusInHandler(event:FocusEvent):void
{
    if (event.target == this)
        systemManager.stage.focus = TextField(textField);

    var fm:IFocusManager = focusManager;

    if (editable && fm)
    {
        fm.showFocusIndicator = true;
        if (textField.selectable &&
            _selectionBeginIndex == _selectionEndIndex)
        {
            textField.setSelection(0, textField.length);
        }
    }

    [...]

anulando esto en mis correcciones de componentes este problema:

    override protected function focusInHandler(event:FocusEvent):void
    {
        super.focusInHandler(event);
        textField.scrollH = currentTextFieldScrollPosition;
    }

Otros consejos

resulta que usted necesita para hacer un manejador onclick para la ventana con UIScrollBar, y luego añadir un detector de eventos enfoque hacia fuera para él que pase por el lugar barra de desplazamiento en el momento de la onclick al foco. ActionScript 3: mantener la posición UIScrollBar área de texto en pérdida de concentración flash embed

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top