做了两个小的项目,添加页面用到了好几个系统 控件,当光标在一个控件上的时候,按方向键“下”, 让下一个控件获取光标。
以前的做法是在OfferKeyEventL()函数中判断扫描码的方式,例如:
//按键落下的情况
if (EEventKeyDown == aType)
{
//按下了方向键“下”
if(17 == aKeyEvent.iScanCode)
{
//本控件失去光标
//下一个控件获取光标
}
}
这种方式可以满足光标上下移动的效果。
但OfferKeyEventL(con st TKeyEvent& aKeyEvent,TEventCode aType)中的第二个参数aType作用是判断当前的按键状态 ,也就是鼠标按下、按中、抬起的三种状态,而上面的 代码我是判断了其中的一种情况,鼠标按下的情况。
像在系统CEikDateEditor、CEikNumberEditor上都没有什么大的问题。
但是在CEikEdwin中,问题就出现了!
CEikEdwin是文本编辑框,当打开的是拼音、笔形输入法的时候,会出现一个输入法文字提示框,用户可以按下方向键“上”、“下”、“左”、“右”进 行文字的选择。但用上面的代码模式,当弹出输入法文字提示框的时候,按下“上”、“下”就会移动到上一个控件或者是下一个控件。这不是预期的结果。
解决的办法:
在OfferKeyEventL(con st TKeyEvent& aKeyEvent,TEventCode aType)函数中尽量不用iScanCode扫描码,用iCode。
//当按下方向键“下”
if(EKeyDownArrow == aKeyEvent.iCode)
{
//本控件失去光标
//下一个控件获取光标
}
这样问题就解决了。呵呵。
希望大家提出建议……
系统控件配合OfferKeyEventL()函数的应用
最新推荐文章于 2021-02-12 18:40:22 发布