キーイベントの取得
キーイベントについてです。
キーイベントは以下の2種類あります
HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
AppUiではHandleKeyEventLをそのた、ViewやコントロールではOfferKeyEventLを使用します。
今回はKMTodayでの処理(AppUI)を見てみます。
TKeyResponse CKMTodayAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
{
if (aType == EEventKey) {
if (aKeyEvent.iCode == EKeyUpArrow) {
iAppView->curDay-=TTimeIntervalDays(1);
iAppView->CalcCalen();
iAppView->DrawNow();
return EKeyWasConsumed;
} else if (aKeyEvent.iCode == EKeyDownArrow) {
iAppView->curDay+=TTimeIntervalDays(1);
iAppView->CalcCalen();
iAppView->DrawNow();
return EKeyWasConsumed;
} else if (aKeyEvent.iCode == EKeyLeftArrow) {
iAppView->curDay-=TTimeIntervalDays(7);
iAppView->CalcCalen();
iAppView->DrawNow();
return EKeyWasConsumed;
} else if (aKeyEvent.iCode == EKeyRightArrow) {
iAppView->curDay+=TTimeIntervalDays(7);
iAppView->CalcCalen();
iAppView->DrawNow();
return EKeyWasConsumed;
} else if (aKeyEvent.iCode == EKeyOK) {
iAppView->curDay.HomeTime();
iAppView->CalcCalen();
iAppView->DrawNow();
return EKeyWasConsumed;
}
}
return EKeyWasNotConsumed;
}
KMTodayではナビゲーションキーに対して日付の処理を行っています。
まずは、キーイベントかどうかの判断を行います。
キーダウン、アップ等もここを通りますので
キーイベントだったときは何のキーが押されたか判断します。大体、左の例を見ていただければわかるかと思います。
注意しなければいけないのはキーイベントに対して処理を行ったときはEKeyWasConsumed、処理を行わなかったときはEKeyWasNotConsumedを戻すことです
また、EKeyOKですがSDKに記述されていませんので注意してください。