我正在尝试在Android AIR应用程序中使用StageText,如下所示:

var tf:StageText = new StageText();
tf.stage = stage;
tf.viewPort = new Rectangle(0, 0, stage.fullScreenWidth, 90);
tf.text = "Test";
tf.editable = true;
tf.autoCorrect = false;
tf.fontSize = 50;
tf.color = 0xFF0000;
tf.maxChars = 12;
tf.restrict = "A-Za-z";


在Android设备上编辑此StageText时,一切正常,直到您按下Delete按钮。到现在为止,将不会显示任何自动更正建议,但是一旦按下删除按钮,现在将开始显示自动更正建议。现在,您按的下一个键将在光标位置插入自动更正的单词,而不是您按的任何键(例如,如果您按“ s”,则如果是自动更正建议,它将插入“ Son”)。

真正奇怪的是,仅当我在StageText上设置了limit属性时,才会发生此行为-如果我将限制行注释掉,则所有功能均会完全符合我的预期。

最佳答案

从文档(flash.text.StageText.restrict):


  注意:限制仅适用于用户输入。脚本可以插入任何
  字符输入文本字段。


由于限制不是100%可靠的,因此无需为文本字段的restrict属性分配值,您可以在CHANGE事件处理程序中使用自己的逻辑(RegExp)自己评估文本。这样您就可以完全控制哪些用户输入了文本字段。

tf.addEventListener(Event.CHANGE, textFieldChangeEventHandler);

private function textFieldChangeEventHandler(event:Event):void
{
    trace(event.target.text);
    //Manage text
}

07-27 16:09