关于文本框输入法问题

kykz222 2007-11-08 10:58:21
我要做个添加好友的界面,在容器里面add了 两个CEikEdwin 其中一个是输姓名 一个是输电话

然后设置了焦点的变化,按向下键就切换到第2个CEikEdwin,问题就来了,当在上面的CEikEdwin用拼音输入的时候

因为字要翻页需要向下按键,结果光标直接跳到下面的CEikEdwin了,这要如何解决呢?

我在想是不是系统的输入法没有返回 EKeyWasConsumed 导致了我的组件也捕捉到了向下的这个按键事件呢?

希望各位大哥帮忙解决一下这个问题。
...全文
316 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhsl12 2008-05-16
  • 打赏
  • 举报
回复
没用 试过了 只要不是输入状态返回都是0
wenstory 2008-05-07
  • 打赏
  • 举报
回复
TKeyResponse ret = EKeyWasNotConsumed;

if (iEdwin->IsFocused())
{
ret= iEdwin->OfferKeyEventL(aKeyEvent,aType);
if (ret == EKeyWasNotConsumed)
{
switch(aKeyEvent.iCode)
{
case EKeyDownArrow:
{
iEdwin->SetFocus(EFalse);
}
break;
default:
break;
}
}
}



你这里要检查iEdwin->OfferKeyEventL(aKeyEvent,aType)的返回值,
如果该事件iEdwin处理,它返回EKeyWasConsumed,否则返回EKeyWasNotConsumed,这样就能区分是输入时翻页还是你主动按下向下键
Juncof 2008-05-06
  • 打赏
  • 举报
回复
TKeyResponse CTestDemoAddContainer::OfferKeyEventL(
const TKeyEvent& aKeyEvent,
TEventCode aType )
{

if(aType == EEventKeyDown)
{
switch (aKeyEvent.iCode)
{
case EStdKeyUpArrow:

if(iEdwinPhone->IsFocused())
{
iEdwinPhone->SetFocus(EFalse);
iEdwinName->SetFocus(ETrue);
return EKeyWasNotConsumed;
}
else if(iEdwinPic->IsFocused())
{
iEdwinPic->SetFocus(EFalse);
iEdwinPhone->SetFocus(ETrue);
return EKeyWasNotConsumed;
}
break;

case EStdKeyDownArrow:
if(iEdwinPhone->IsFocused())
{
iEdwinPhone->SetFocus(EFalse);
iEdwinPic->SetFocus(ETrue);
return EKeyWasNotConsumed;
}
else if(iEdwinName->IsFocused())
{
iEdwinName->SetFocus(EFalse);
iEdwinPhone->SetFocus(ETrue);
return EKeyWasNotConsumed;
}
break;
}
}

if (iEdwinPhone->IsFocused())
{
return iEdwinPhone->OfferKeyEventL(aKeyEvent, aType);
}
if (iEdwinName->IsFocused())
{
return iEdwinName->OfferKeyEventL(aKeyEvent, aType);
}
if( iEdwinPic->IsFocused())
{
return iEdwinPic->OfferKeyEventL(aKeyEvent, aType);
}

return EKeyWasNotConsumed;
}
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
等待牛人来答.
ss1969 2007-11-14
  • 打赏
  • 举报
回复
这帖子要顶一下,和我发的http://topic.csdn.net/u/20071030/14/2e973458-c5a5-4982-b197-ed387ddb2ca3.html?seed=1719379804异曲同工啊。。。

楼主你解决没有啊??解决了说下啊。。。
jmulxg 2007-11-09
  • 打赏
  • 举报
回复
1、editor的focuse 全部设置试下
即iEdwinPic->SetFocus(EFalse);

2、将下面的"return EKeyWasConsumed;" 屏蔽,
case EStdKeyUpArrow:

if(iEdwinPhone-> IsFocused())
{
iEdwinPhone-> SetFocus(EFalse);
iEdwinName-> SetFocus(ETrue);
// return EKeyWasConsumed;
}
else if(iEdwinPic-> IsFocused())
{
iEdwinPic-> SetFocus(EFalse);
iEdwinPhone-> SetFocus(ETrue);
// return EKeyWasConsumed;
}
break;

大概的比较了你帖出的代码不同有以上两点,可以尝试。
kykz222 2007-11-08
  • 打赏
  • 举报
回复
TKeyResponse CTestDemoAddContainer::OfferKeyEventL(
const TKeyEvent& aKeyEvent,
TEventCode aType )
{

if(aType == EEventKeyDown)
{
switch (aKeyEvent.iScanCode)
{
case EStdKeyUpArrow:

if(iEdwinPhone->IsFocused())
{
iEdwinPhone->SetFocus(EFalse);
iEdwinName->SetFocus(ETrue);
return EKeyWasConsumed;
}
else if(iEdwinPic->IsFocused())
{
iEdwinPic->SetFocus(EFalse);
iEdwinPhone->SetFocus(ETrue);
return EKeyWasConsumed;
}
break;

case EStdKeyDownArrow:
if(iEdwinPhone->IsFocused())
{
iEdwinPhone->SetFocus(EFalse);
iEdwinPic->SetFocus(ETrue);
return EKeyWasConsumed;
}
else if(iEdwinName->IsFocused())
{
iEdwinName->SetFocus(EFalse);
iEdwinPhone->SetFocus(ETrue);
return EKeyWasConsumed;
}
break;
}
}

if (iEdwinPhone->IsFocused())
{
return iEdwinPhone->OfferKeyEventL(aKeyEvent, aType);
}
if (iEdwinName->IsFocused())
{
return iEdwinName->OfferKeyEventL(aKeyEvent, aType);
}
if( iEdwinPic->IsFocused())
{
return iEdwinPic->OfferKeyEventL(aKeyEvent, aType);
}

return EKeyWasNotConsumed;
}
anel 2007-11-08
  • 打赏
  • 举报
回复
贴出你的代码容易发现问题
kykz222 2007-11-08
  • 打赏
  • 举报
回复
有没有人碰到过相关问题啊,我急着解决这个问题啊,难道非要做个next的菜单键来进行下移才行
kykz222 2007-11-08
  • 打赏
  • 举报
回复
我是参照Series60Ex\BookStore的例子 添加一本书的时候也是这个情况 一按输入法打字下翻 光标也下去了
anel 2007-11-08
  • 打赏
  • 举报
回复
参考
Series60Ex\editor
kykz222 2007-11-08
  • 打赏
  • 举报
回复
我就是想在中文输入法选字的时候把CEikEdwin不捕获按下的键
kykz222 2007-11-08
  • 打赏
  • 举报
回复
这个是让CEikEdwin获得光标吧? 我有这句话啊 不然按下键的时候光标也移不下去了
anel 2007-11-08
  • 打赏
  • 举报
回复
iEditor->SetFocus(true);
kykz222 2007-11-08
  • 打赏
  • 举报
回复
是啊 3个 这个没关系的
anel 2007-11-08
  • 打赏
  • 举报
回复
你不止两个editor

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧