三版移植到第五版文本框的输入解决方案:
CEikEdwin* iEdwin1;
在第三版上,输入框可以直接响应OfferKeyEventL(),当移植到第五版上的时候,需要响应HandlePointerEventL(),
五版上做法如下:
void CloginContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent)
{
if (aPointerEvent.iType == TPointerEvent::EButton1Up)
{
TPoint inewPointer = aPointerEvent.iPosition;
if (iEdwin1->Rect().Contains(inewPointer))
{
iEdwin1->SetFocus(ETrue);
TBuf<200> uri;
CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog(uri,
CAknQueryDialog::ENoTone);
if (!dlg->ExecuteLD(R_DIALOG_QUERY_ACCOUNT))
return;
iEdwin1->SetTextL(&uri);
}
else if (iEdwin2->Rect().Contains(inewPointer))
{
iEdwin2->SetFocus(ETrue);
TBuf<200> uri;
uri.Append(_L("value")); //默认的内容
CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog(uri,
CAknQueryDialog::ENoTone);
if (!dlg->ExecuteLD(R_DIALOG_QUERY_PASSWD))
return;
iEdwin2->SetTextL(&uri);
}
}
DrawDeferred();
}
.rss文件
//-----------------------------------账号输入框-----------------------------------
RESOURCE DIALOG r_dialog_query_account
{
flags = EGeneralQueryFlags;
buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
items =
{
DLG_LINE
{
type = EAknCtQuery;
id = EGeneralQuery;
control = AVKON_DATA_QUERY
{
layout = EDataLayout;
label = qtn_dlg_0; //.rls中定义的标签
control = EDWIN
{
maxlength = 128;
default_input_mode = EAknEditorNumericInputMode; //默认输入法
allowed_input_modes = EAknEditorNumericInputMode; //允许的输入法,只能输入数字。
};
};
}
};
}
//-----------------------------------密码输入框-----------------------------------
RESOURCE DIALOG r_dialog_query_passwd
{
flags = EGeneralQueryFlags;
buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
items =
{
DLG_LINE
{
type = EAknCtQuery;
id = EGeneralQuery;
control = AVKON_DATA_QUERY
{
layout = EDataLayout;
label = qtn_dlg_1; //.rls中定义的标签
control = EDWIN
{
maxlength = 128;
default_input_mode = EAknEditorSecretAlphaInputMode;
allowed_input_modes = EAknEditorSecretAlphaInputMode|EAknEditorNumericInputMode; //只能输入数字、字符。不能输入汉字
};
};
}
};
}