【问题标题】:Events dispatched by setFormatofRange由 setFormatofRange 调度的事件
【发布时间】:2010-07-29 13:41:16
【问题描述】:

我有一个文本区域,当我使用 setFormatOfRange() 更改文本格式时,我想在该区域上收听更改事件。到目前为止,我尝试过的所有其他事件,例如 Event.CHANGE 或 TextOperationEvent.CHANGE 仅在实际文本更改时才调度。

有人知道我应该听什么吗?

【问题讨论】:

    标签: apache-flex actionscript-3 textarea flex4 tlf


    【解决方案1】:

    实际上你可以在格式改变时得到TextOperationEvent.CHANGE,但前提是你使用EditManager。 您应该创建一个 EditManager 对象并分配给 TextArea.textFlow.interactionManager 并且您的所有格式操作都应通过此 EditManager 对象执行。它有 applyFormat 之类的方法。

    而且我不推荐使用 setFormatOfRange,因为它对于大量格式化操作非常慢。相反,您应该使用 EditManager 或 ApplyFormatOperation 对象。 here's a post in which is explained how to use ApplyFormatOperation objects

    【讨论】:

      【解决方案2】:

      TextArea(或任何其他文本控件)不会触发任何文本格式更改的事件。甚至文本更改事件也仅在用户手动更改文本时才会触发 - 而不是在您以编程方式更改它时。

      TextOperationEvent 类表示由于用户操作(例如插入字符、退格、粘贴或更改文本属性)导致文本内容发生更改时调度的事件。

      【讨论】:

      • 感谢您的回答,但“文本属性”包括什么?
      • 如果这有帮助,我的目标是在每次格式或文本更改后以 XML 格式存储 textFlow,有什么想法吗?
      • @Tarek 您正在手动更改它们,对吗?您可以在每次执行此操作时更新 xml..
      • 它是文本编辑器,因此它可以通过用户操作进行更新。我在各种按钮点击时调用 setformatofrange 。无论如何,我已经求助于自定义事件,因为没有内置任何东西。你有别的想法吗?
      • 自定义事件似乎是要走的路。
      猜你喜欢
      • 2017-09-14
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多