这应该不行,当我在输入一个字时也会触发Handler的这样的话按第一个键时执行inputMode = false;按下第二个个键时就又恢复原样了





使用inputtext时要按下OK键输入输入完毕后要按左软键或者右软键(光标在最左)退出输入模式,但是这样的话再输入过程中所有键盘事件会被Handler所捕获影响操作,所以是否有什么接口可以知道输入模式是否打开?





这应该不行,当我在输入一个字时也会触发Handler的这样的话按第一个键时执行inputMode = false;按下第二个个键时就又恢复原样了





reference="LzKeys" 一般在handler里面应该去掉这个属性的设置,这个属性表示不管handler在任何位置都能接受到按键事件,那样你的setFocus就没用了。
没有专门的接口可以知道输入模式是否打开,这个只能自己通过其他的方式去控制,而上次的回答只是给你的一点建议,具体的方式还是希望能通过你自己的思考去完成。





可以给inputtext增加一个“ontext”handler来监听输入是否完成,在完成输入后,“ontext”事件被触发。(注:首次加载时,由于给inputtext赋空值,会触发一次“ontext”事件)示例代码:
<canvas>
<inputtext id="input" x="27" y="76" width="160" focusable="true"
fgcolor="0x000000" fontsize="15">
<handler name="onkeydown" args="k">
alert("key : " + k);
</handler>
<handler name="ontext">
alert("ontext");
</handler>
</inputtext>
<handler name="oninit">
LzFocus.setFocus(input);
</handler>
</canvas>
没有专门的接口可以知道输入模式是否打开。但是在编程中可以使用一点点小技巧去控制。
例如:定义一个全局变量
<script> var inputMode = false;//在进入输入法的时候将此值设置为true。 </script> <handler name="onkeydown" reference="LzKeys" args="key"> if(inputMode) { inputMode = false; return; } //其他控制逻辑 </handler>通过这种方式可以控制。