【问题标题】:Flex Spark TextArea insertText breaks undo bufferFlex Spark TextArea insertText 中断撤消缓冲区
【发布时间】:2011-06-09 04:12:24
【问题描述】:

我有一个简单的 TextArea

<s:TextArea id="taData" keyUp="keyListener(event)" focusEnabled="false" fontFamily="Courier New" fontSize="12" left="10" right="10" top="40" bottom="10"/>

keyListener 允许 tab 像这样使用

private function keyListener(event:KeyboardEvent):void
{
    if (event.keyCode == Keyboard.TAB)
    {
        event.currentTarget..insertText("\t");
    }
}

一切都按预期工作,但撤消缓冲区在插入选项卡时重置/停止。

有没有办法确保即使插入了选项卡,撤消缓冲区也保持完好

【问题讨论】:

    标签: apache-flex actionscript-3 textarea


    【解决方案1】:

    如果您只想在用户按下 tab 键时在文本中插入一个 tab,那么有一种更好的方法(我希望它可以同时解决您的撤消问题)。

    您必须访问 TextArea 的模型 - TextFlow 对象 - 并修改其配置。文本流Configuration 类有一个名为“manageTabKey”的属性,默认为“false”。如果您将其设置为“true”,它将执行我认为您正在尝试为您做的事情,即当用户点击 tab 键时,插入一个 tab 字符而不是将焦点放在下一个可聚焦的元素上。

    var textFlow:TextFlow = taData.textFlow;
    var config:Configuration = Configuration(textFlow.configuration);
    config.manageTabKey = true;
    

    强制转换为 Configuration 是必要的,因为 textFlow.configuration 返回一个 IConfiguration 接口,该接口没有用于 manageTabKey 的 setter 方法。

    此外,您甚至可以使用“tabStops”属性设置标签的宽度。

    textFlow.tabStops = "25 50 75 100";
    

    编辑: 我刚刚注意到您将“focusEnabled”设置为 false。这也将不再需要。

    【讨论】:

      猜你喜欢
      • 2012-08-02
      • 2013-05-19
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多