Сенсорные жесты, мешающие друг другу: плохой пользовательский опыт - PullRequest
0 голосов
/ 15 января 2019

Я обнаруживаю жесты касания в своем приложении Qt следующим образом:

void CameraController::handleTouch(QTouchEvent *event)
{

    /*
     * Just 2 fingers on touch screen
     */
    if (event->touchPoints().length() == 2) {
        QTouchEvent::TouchPoint point1 = event->touchPoints().at(0);
        QTouchEvent::TouchPoint point2 = event->touchPoints().at(1);

        /*
         * Both fingers are "moving"
         */
        if (point1.state() == Qt::TouchPointMoved &&
                point2.state() == Qt::TouchPointMoved) {

            qDebug() << __func__ << "Gesture: 2-fingers!";
            handleGesture2fingers(point1, point2);

            }

        }
        /*
         * Only 1 finger on touch screen
         */
    } else if (event->touchPoints().length() == 1) {
        QTouchEvent::TouchPoint point = event->touchPoints().at(0);

        /*
         * The finger is moving
         */
        switch (point.state()) {
        case Qt::TouchPointMoved:
            qDebug() << __func__ << "Gesture: single finger!";
            handleGestureSingleFinger(point);
            break;
        default:
            break;
        }
        /*
         * Three fingers on touch screen
         */
    } else if (event->touchPoints().length() == 3) {
        QTouchEvent::TouchPoint point1 = event->touchPoints().at(0);
        QTouchEvent::TouchPoint point2 = event->touchPoints().at(1);
        QTouchEvent::TouchPoint point3 = event->touchPoints().at(2);

        /*
         * All 3 fingers are moving
         */
        if (point1.state() == Qt::TouchPointMoved &&
                point2.state() == Qt::TouchPointMoved &&
                point3.state() == Qt::TouchPointMoved) {
            qDebug() << __func__ << "Gesture: 3-fingers!";
            handleGesture3fingers(point1, point2, point3);
        }
    }

}

К моему удивлению, мои жесты мешают друг другу, как показывают мои журналы, жест 2-finger мешает жесту 3-finger:

handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 3-fingers!
handleTouch Gesture: 3-fingers!
handleTouch Gesture: 3-fingers!
handleTouch Gesture: 3-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!

Также single-finger жест, мешающий 2-finger жест:

handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: single finger!
handleTouch Gesture: single finger!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: single finger!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: single finger!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: 2-fingers!
handleTouch Gesture: single finger!
handleTouch Gesture: 2-fingers!

Помехи оказывают негативное влияние на пользовательский опыт. Интересно, как лучше избегать этих жестов?


UPDATE

Я не менял код, но сегодня я вижу, что приложение работает хорошо, а пользовательский опыт - хороший! Возможно, устройство с сенсорным экраном, с которым я работал вчера, НЕ было надежным:)

...