触摸事件在SettingsList(第5版Ed SDK)中不起作用

时间:2011-05-16 17:37:11

标签: sdk touch symbian

我正在使用带有S60 5th Ed SDK的Carbide.C ++ 2.7来创建我的应用程序,

在我的应用程序中添加了SettingsList后,我从“选项菜单”中删除了“更改”项目,然后我将“退出”更改为“后退”,并将左侧按钮标题设置为空 - 而不是选项 - 并且问题是当我触摸任何SettingsList项目时没有响应,我必须使用“输入密钥”打开项目编辑器 - 无论是卷项目还是二进制项目等 - 所以缺少或导致这个问题 ?

任何建议都会受到赞赏,因为我找不到使用不同SDK创建的两个SettingsList之间的区别。

我使用S60 3rd Ed FP1 SDK创建了另一个应用程序 - 作为一个简单的测试 - 我尝试了它,它可以正常使用Double Tap Touch和Enter Key。 (在E7上测试)。

我使用S60 5th Ed创建了相同的示例,并删除了“更改”菜单,但它不响应触摸事件,而只响应Enter键事件。 (在E7上测试)。

我在Carbide事件/属性视图中比较了两个项目,它们是相同的,我打开了两个项目src文件,它们是相同的。

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

我发现Carbide.C ++默认情况下不包括“Touch”事件处理,即使我正在创建 我的应用程序使用支持“Touch”事件的第五个Ed SDK。所以我需要添加 EAknTouchCompatible

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

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

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

要使用“ One Tap ”激活项目编辑器,我们需要覆盖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 );              }
            }

}