開始的時候我在sdk中看到了
EButtonRepeat,以為是symbian提供了雙擊事件的方法,其實不然,我現在覺得這個應該不是用來處理雙擊的,但是我也不知道是用來幹什麼的,如果有路過的大神看見了,希望在留言中指點一下,在這裡不甚感激。
不廢話了,做處理雙擊事件的思路是:當第一個EButton1Down事件 發生時,我用hometime記錄下當時的TDatatime,然後如果下次擷取hometime的時間小於我但是設定的一個雙擊事件的間隔,那麼我就判定為雙擊事件。當然也可以加上地區的判斷。
代碼如下:
if(aPointerEvent.iType == TPointerEvent::EButton1Down)
{
iButton1Down = aPointerEvent.iPosition;
if(iBackRect.Contains(iButton1Down))
{
TTime timeNow;
timeNow.HomeTime();
TInt nInterArrivalTime = timeNow.Int64() - iButton1DownTimeNow.Int64();
if(nInterArrivalTime < 500000)
{
iView->HandleCommandL((TInt)EAknSoftkeyBack);
}
iButton1DownTimeNow = timeNow;
}
}
其中iBackRect 是指點擊的有效地區,如果兩次時間都在這個地區類 而且兩次時間間隔小於設定的時間,及判斷為雙擊。
成員變數:
TPoint iButton1Down ;
TDataTime iButton1DownTimeNow;
這裡設定的兩次單擊的時間間隔如上nInterArrivalTime < 500000,為0.5秒
這裡應該特別注意的是iButton1DownTimeNow這個的初始化不要習慣的初始化為0,不然會出現很抽象的效果,我想大神們都應該清楚,我就不說了,初始化方式可也是iButton1DownTimeNow.HomeTime();