actionscript 3-Flex Spark TextArea insertText中断撤消缓冲区



我有一个简单的TextArea

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

keyListener允许像这个一样使用选项卡

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

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

是否有一种方法可以确保撤消缓冲区保持原样,即使插入了选项卡

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

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

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

强制转换为Configuration是必要的,因为textFlow.config返回的IConfiguration接口没有manageTabKey的setter方法。

此外,您甚至可以使用"tabStops"属性来设置选项卡的宽度。

textFlow.tabStops = "25 50 75 100";

编辑:我刚刚注意到您将"focusEnabled"设置为false。这也将不再是必要的。

最新更新