Flex TextArea向下滚动

时间:2011-09-01 19:17:50

标签: flex textarea scrollbar vertical-scrolling

我有一个TextArea,可以显示所选聊天室的对话。对于valueCommit事件,我使用:verticalScrollPosition = maxVerticalScrollPosition;并且可以正常滚动文本到底部。但是在一种情况下,它不能按预期工作。文本非常少,因此TextArea没有滚动条,然后我放了很多文本,滚动条是必要的。文本几乎滚动到底部(仍然需要向下滚动几行)。我很确定它会maxVerticalScrollPosition,好像没有滚动条一样。所以问题是我如何等待更新verticalScrollPosition相对于TextArea's新大小(现在使用滚动条)。我尝试调用validateSize和其他以'validate'开头的方法,但遗憾的是没有运气。我还尝试了在文本末尾放置插入符号的旧技巧。因此,TextArea's滚动条在获取maxVerticalScrollPosition时会有所不同,并且在完成所有测量后我需要更新verticalScrollPosition

我忘了提。我使用htmlText

2 个答案:

答案 0 :(得分:1)

在您接受的答案评论中,您提到了一个更优雅的解决方案。是的,计时器可能不是最佳选择 - 如果从舞台中删除组件,则可以使用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;
}

我希望有所帮助。 祝你好运!

答案 1 :(得分:0)

假设在您再次添加其他文字后问题得以解决,您可以使用Timer或致电setTimeout,并将verticalScrollPosition = maxVerticalScrollPosition称为一小部分第二个稍后,看看是否修复它。