我有一个简单的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");
}
}
一切都按预期工作,但撤消缓冲区在插入选项卡时重置/停止。
有没有办法确保撤消缓冲区即使插入了标签
也能保持完好无损答案 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。这也将不再是必要的。