Flex 4.5.1+AIR 3.1 Mac版本 s:TextInput 第一个中文字符无法获取的解决

本文介绍了一种自定义Flex框架中TextInput组件的行为方法,通过监听valueCommit事件来实现在用户开始输入时隐藏提示字符串的功能,并解决了一些特定输入法环境下输入内容被遮挡的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置了textinput提示字符串,但是默认是只要空间获得焦点是便不显示提示字符串了,这样很多时候用户忘记了提示的内容,最好能在输入第一个字符后再隐藏提示字符串。所以监听了valueCommit事件,在响应中更新空间皮肤状态,当有输入字符时隐藏提示字符串。

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 '';
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值