设置了textinput提示字符串,但是默认是只要空间获得焦点是便不显示提示字符串了,这样很多时候用户忘记了提示的内容,最好能在输入第一个字符后再隐藏提示字符串。所以监听了valueCommit事件,在响应中更新空间皮肤状态,当有输入字符时隐藏提示字符串。
用mac版QQ输入法输入第一个字符后,发现提示字符串并没有,输入的字被提示字符串挡上了。调试发现,text属性值仍然为"",参考[url]http://www.iteye.com/topic/1113987[/url]重写text属性,问题就可以解决了
override protected function childrenCreated():void
{
super.childrenCreated();
//watch for programmatic changes to text property
this.addEventListener(FlexEvent.VALUE_COMMIT, textChangedHandler, false, 0, true);
}
protected function textChangedHandler(e:Event):void {
dispatchEvent(new Event('textChanged'));
invalidateSkinState();
}
override protected function getCurrentSkinState():String
{
if(prompt && text.length == 0)
{
if (enabled && skin && skin.hasState("normalWithPrompt"))
return "normalWithPrompt";
if (!enabled && skin && skin.hasState("disabledWithPrompt"))
return "disabledWithPrompt";
}
return enabled ? "normal" : "disabled";;
}
用mac版QQ输入法输入第一个字符后,发现提示字符串并没有,输入的字被提示字符串挡上了。调试发现,text属性值仍然为"",参考[url]http://www.iteye.com/topic/1113987[/url]重写text属性,问题就可以解决了
override public function get text():String
{
if(textDisplay)
{
var obj:Object = TextConverter.export((textDisplay as RichEditableText).textFlow,
TextConverter.PLAIN_TEXT_FORMAT, ConversionType.STRING_TYPE);
return obj ? obj.toString() : '';
}
return '';
}