El evento táctil no funciona en SettingsList (5th Ed SDK)

Estoy usando Carbide.C ++ 2.7 con S60 5th Ed SDK para crear mi aplicación,

después de agregar una lista de configuración a mi aplicación, eliminé el elemento "Cambiar" del "Menú de opciones", y cambié "Salir" a "Atrás" y establecí el título del botón izquierdo vacío, en lugar de Opciones, y el problema es que cuando toco cualquier elemento de los elementos de SettingsList, no hay respuesta, y tengo que usar la "tecla Intro" para abrir el editor de elementos, ya sea un elemento de volumen o un elemento binario, etc. Entonces, ¿qué falta o está causando este problema?

Se agradecería cualquier sugerencia porque no pude encontrar la diferencia entre dos SettingsList creadas con diferentes SDK.

Creé otra aplicación con S60 3rd Ed FP1 SDK, como una prueba simple, y la probé y funciona bien con Double Tap Touch y Enter Key. (probado en E7).

Y creé la misma muestra con S60 5th Ed, y eliminé el menú "Cambiar" pero no responde al evento táctil, sino solo al evento Enter Key. (probado en E7).

Comparé ambos proyectos en las vistas de Carbide Event / properties y son iguales, abrí los archivos src de ambos proyectos y son iguales.

Muchas gracias de antemano.

preguntado el 16 de mayo de 11 a las 17:05

1 Respuestas

Me di cuenta de que Carbide.C ++ no incluye de forma predeterminada el manejo de eventos "Touch", incluso si estoy creando mi aplicación usando 5th Ed SDK que admite el evento "Touch". Entonces necesito agregar EAknTouchCompatible.

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

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

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

Y para activar el editor de elementos con "Un toque"necesitamos anular la función virtual compatible con 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 );              }
            }

}

Respondido 02 ago 11, 16:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.