Flex TextArea прокрутите вниз - PullRequest
       24

Flex TextArea прокрутите вниз

2 голосов
/ 01 сентября 2011

У меня есть TextArea, который показывает разговор из выбранной комнаты чата. Для события valueCommit я использую: verticalScrollPosition = maxVerticalScrollPosition; И он отлично работает, прокручивая текст вниз. Однако в одном случае это не работает, как ожидалось. Текст очень маленький, поэтому у TextArea нет полосы прокрутки, а затем я помещаю много текста, и полоса прокрутки необходима. Текст прокручивается почти до самого конца (еще несколько строк нужно прокрутить вниз). Я почти уверен, что он получает maxVerticalScrollPosition, как если бы не было полосы прокрутки. Поэтому вопрос заключается в том, как я могу ждать с обновлением verticalScrollPosition относительно TextArea's нового размера (то есть теперь с полосой прокрутки). Я попытался вызвать validateSize и другие методы, которые начинаются с 'validate', но, к сожалению, безуспешно. Я также попробовал старый трюк, заключающийся в том, чтобы поставить каретку в конце текста. Таким образом, полоса прокрутки TextArea's имеет значение при получении maxVerticalScrollPosition, и мне нужно обновить verticalScrollPosition, как только все измерения будут выполнены.

Я забыл упомянуть. Я пользуюсь htmlText.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

В комментариях к ответу, который вы приняли, вы упомянули более элегантное решение.Да, таймер, вероятно, не лучший вариант - у вас есть очистка EventListener, если вы удалите компонент со сцены;если вы используете компонент более одного раза, у вас есть другой экземпляр таймера;и т. д. и т. д.

Если у вас не так много действий, связанных со свойством post-commit-property, самым быстрым решением будет вызов позже для установщика текста или htmlText

override public function set text(value:String):void
{
    super.text = value;

    callLater( scrollToEndAfterTextCommitted );
}

protected function scrollToEndAfterTextCommitted():void
{
    this.verticalScrollPosition = this.maxVerticalScrollPosition;
}

Надеюсь, это поможет.Желаем удачи!

0 голосов
/ 01 сентября 2011

Предполагая, что проблема исправлена ​​после добавления дополнительного текста, вы, вероятно, могли бы получить, используя Timer или вызов setTimeout, и verticalScrollPosition = maxVerticalScrollPosition вызывался бы через доли секунды, и посмотрите, если этоисправляет это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...