我有一个文本区域,当我使用 setFormatOfRange() 更改文本格式时,我想在其上收听更改事件。到目前为止,我尝试过的所有其他事件,例如 Event.CHANGE 或 TextOperationEvent.CHANGE 仅在实际文本更改时才被调度。
有人知道我应该听什么吗?
我有一个文本区域,当我使用 setFormatOfRange() 更改文本格式时,我想在其上收听更改事件。到目前为止,我尝试过的所有其他事件,例如 Event.CHANGE 或 TextOperationEvent.CHANGE 仅在实际文本更改时才被调度。
有人知道我应该听什么吗?
实际上,您可以在格式更改时获取 TextOperationEvent.CHANGE,但前提是您使用 EditManager。您应该创建一个 EditManager 对象并分配给 TextArea.textFlow.interactionManager 并且您的所有格式操作都应通过此 EditManager 对象执行。它有 applyFormat 之类的方法。
而且我不推荐使用 setFormatOfRange ,因为它对于大量格式操作来说非常慢。相反,您应该使用 EditManager 或 ApplyFormatOperation 对象。 这是一篇文章,其中解释了如何使用 ApplyFormatOperation 对象
TextArea
(或任何其他文本控件)不会触发任何文本格式更改的事件。甚至文本更改事件也只有在用户手动更改文本时才会触发 - 而不是在您以编程方式更改它时。
TextOperationEvent类表示当文本内容因用户操作(例如插入字符、退格、粘贴或更改文本属性)而发生更改时调度的事件。