Flex Spark TextArea insertText会破坏撤消缓冲区

时间:2011-06-09 04:12:25

标签: flex actionscript-3 textarea

我有一个简单的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");
    }
}

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

有没有办法确保撤消缓冲区即使插入了标签

也能保持完好无损

1 个答案:

答案 0 :(得分:2)

如果您只想在用户按下Tab键时在文本中插入一个标签,则可以采用更好的方法(我希望它能同时解决您的撤消问题)。

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

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

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

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

textFlow.tabStops = "25 50 75 100";

修改 我刚刚注意到你将'focusEnabled'设置为false。这也将不再是必要的。