2011-05-16 48 views
0

我用的Carbide.C++ 2.7使用S60第五版SDK創建我的應用程序,觸摸事件不SettingsList工作(第5版SDK)

後,我加入了SettingsList到我的應用程序去掉了「從「選項菜單」更改「項目,我將」退出「更改爲」後退「,我將左側按鈕標題設置爲空 - 而不是選項 - 問題是當我觸摸SettingsList項目的任何項目時沒有響應,我必須使用「Enter Key」來打開項目編輯器 - 無論是Volume項目還是Binary項目等 - 那麼缺少什麼或導致此問題?

任何建議,將不勝感激,因爲我找不到使用不同的SDK創建的兩個SettingsList之間的區別。

我使用S60 3rd Ed FP1 SDK創建了另一個應用程序 - 作爲一個簡單的測試 - 我嘗試了它,並且它可以在雙擊觸摸和Enter鍵的情況下正常工作。 (在E7上測試)。

我創建了與S60第五版相同的示例,並刪除了「更改」菜單,但它不響應觸摸事件,但僅響應Enter鍵事件。 (在E7上測試)。

我比較了Carbide Event/properties視圖中的兩個項目,它們是相同的,我打開了兩個項目的src文件,它們是相同的。

許多在此先感謝。

回答

0

我發現Carbide.C++默認不包含「Touch」事件處理,即使我使用支持「Touch」事件的5th Ed SDK創建了 。所以我需要添加EAknTouchCompatible

void AppUi::ConstructL() 
{ 
    // [[[ begin generated region: do not modify [Generated Contents] 

     BaseConstructL(EAknEnableSkin | EAknEnableMSK | EAknTouchCompatible); 
     InitializeContainersL(); 

    // ]]] end generated region [Generated Contents] 
} 

,並啓動以「一個水龍頭」項目編輯器,我們需要覆蓋由MEikListBoxObserver

void CSettingItemList::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType) 
{ 
    if (aEventType == EEventItemClicked || aEventType == EEventEnterKeyPressed || aEventType == EEventItemSingleClicked) 
      { 
       //Now with one Tap it opens the control editor. 
       //Using EFalse means not called from menu, 
       //so it doesn't show the Edit dialog with binarysetting control (On/Off). 
       EditItemL(ListBox()->CurrentItemIndex(), EFalse);    } 
      } 

} 
支持的虛擬功能