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