У меня есть приложение для Android Xamarin с GestureDetector. На моем устройстве (Sony Xperia S5303) и в эмуляторах он работает нормально. Однако на планшете Samsung Galaxy событие OnSingleTapUp запускается дважды, даже если я касаюсь экрана только один раз. Поскольку событие проверяется OnSingleTapConfirmed, и устройство ведет себя так, как будто были сделаны два крана, следующий метод никогда не вызывается:Событие OnSignleTapUp срабатывает дважды
public bool OnSingleTapUp(MotionEvent e)
{
if (PersistentContext.LoggedPlayer.Token)
{
if (simpleOnGestureListener.OnSingleTapConfirmed(e))
{
Move(e);
}
return true;
}
return false;
}
Странная вещь, что при нажатии на кнопку, метод кнопки называется только один раз. Может ли кто-нибудь сказать мне, что может вызвать это странное поведение и как его избежать?
Если вы внимательно прочитали вопрос, вы увидите, что я использую onSingleTapConfirmed. Проблема в том, что даже тогда событие вызывается дважды. Я сделал простой способ обхода путем реализации onDoubleTap и присвоения ему той же функциональности, поскольку я не использовал onDoubleTap. Однако даже у моих коллег были неоднократные проблемы с устройствами Samsung. Интересно, почему Google не контролирует реализацию Samsungs Android немного больше. – Storm
Да, я вижу, что я не использую Xamarin, но вот то, что вижу: способ использования onSingleTapConfirmed - проблема. onSingleTapUp работает на два шага вперед и, конечно же, есть подтверждение для нажатия, поэтому вы отключите эффект onSingleTapConfirmed. Я отредактировал свой ответ с помощью некоторого фрагмента кода, и я надеюсь, что он сработает для вас. –
На самом деле, я сделал то же самое :) все еще, устройства Samsung дважды уволили событие. Я знаю, что аналогичная проблема возникла и в PhoneGap. Возможно, он был обновлен в новых версиях Android/Xamarin. Но я закончил проект около полугода назад и с тех пор не вернулся, так что я не могу это подтвердить. – Storm