Событие касания не работает в Списке настроек (5th Ed SDK) - PullRequest
0 голосов
/ 16 мая 2011

Я использую Carbide.C ++ 2.7 с S60 5th Ed SDK для создания своего приложения,

после того, как я добавил в свой список «Настройки», я удалил пункт «Изменить» из «Меню настроек», и яизменил «Выход» на «Назад», и я оставил заголовок левой кнопки пустым - вместо параметров - и проблема в том, что когда я касаюсь какого-либо элемента элементов списка настроек, ответ не появляется, и я должен использовать «ключ ввода»открыть редактор элементов - будь то элемент «Объем», «Двоичный элемент» и т. д. - Так что же пропало или вызывает эту проблему?

любые предложения приветствуются, потому что я не могу найти различий между двумя списками параметров, созданными с использованием разных SDK.

Я создал другое приложение с S60 3rd Ed FP1 SDK - в качестве простого теста - и япопробовал, и он отлично работает с Double Touch Touch и Enter Key.(проверено на E7).

И я создал тот же самый образец с S60 5th Ed, и удалил меню «Изменить», но оно не отвечает на событие касания, а только на событие «Ввод ключа».(проверено на E7).

Я сравнил оба проекта в представлениях событий / свойств Carbide, и они совпадают, я открыл файлы src обоих проектов, и они одинаковы.

Заранее большое спасибо.

1 Ответ

0 голосов
/ 24 мая 2011

Я выяснил, что Carbide.C ++ по умолчанию не включает обработку событий "Touch", даже если я создаю мое приложение использует 5th Ed SDK, который поддерживает событие "Touch". Поэтому мне нужно добавить 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 );              }
            }

}
...