Блокировать событие во время анимации

Я работаю над приложением, в котором я имплантировал функцию смахивания.

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

boxview.Swiped += (s, e) =>
{
    if (e.Direction == MR.Gestures.Direction.Right)
    {
        boxview.TranslateTo(-600, 0, 500, null);
    }
}

Так что я хочу игнорировать это, если, если он вызывается снова в течение 500 мс времени, необходимого для завершения анимации.

Мысль о том, чтобы просто взять событие (е) и отменить его. но мне все еще нужен способ сказать, что он должен делать это только в течение промежутка времени. и не повезло заставить его работать.

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

2 ответа

Решение

Поскольку я не знаком с самим Xamarin, этот ответ является теоретическим. TranslateTo кажется ожидаемым, поэтому вы можете использовать флаг, который вы проводите, дождаться перевода и сбросить флаг после этого

bool swiping;
boxview.Swiped += async (s, e) =>
{
    if (e.Direction == MR.Gestures.Direction.Right && !swiping)
    {
        swiping = true;
        await boxview.TranslateTo(-600, 0, 500, null);
        swiping =false;
    }
}

Вы можете запустить таймер и проверить его на следующем событии.

Другие вопросы по тегам