У меня есть любопытный случай, когда GestureDetectorCompat.onScroll не вызывается.У меня есть SurfaceView для отображения пользовательской карты, которая реализует GestureDetector.OnGestureListener, и в этом классе SurfaceView у меня есть два GestureDetectors, один для обработки жестов в обычном режиме и один для обработки жестов при редактировании карты.У меня есть переменная _activeGestureDetector, которую я назначаю правильному GestureDetector в зависимости от варианта использования.Это прекрасно работает почти во всех случаях, кроме одного.
Обычно я переключаюсь в режим редактирования GestureDetector, когда дважды нажимаю на элемент на карте, и переключаюсь обратно в обычный режим GestureDetector, когда дважды нажимаю за пределами любых элементов на карте.Это работает как ожидалось.Теперь я добавил функцию, которая переходит из режима редактирования в обычный режим при нажатии кнопки HomeAsUp на панели инструментов.Я вижу, что детектор жестов переключается в нормальный режим GestureDetector при нажатии на кнопку «Домой», и я получаю события onTouch и событие onDown, но onScroll не вызывается, хотя я вижу в своем logcat, что onTouch получаетодно событие ACTION_DOWN и множество событий ACTION_MOVE.Если я удерживаю палец и перемещаю его достаточно долго, вызывается событие onLongPress (но этого не должно быть, поскольку я все время двигаю пальцем).
Такое поведение происходит только в первый разЯ пытаюсь прокрутить после нажатия кнопки «Домой», последующие события работают нормально.Это происходит каждый раз, когда я нажимаю кнопку «Домой», чтобы выйти из режима редактирования.Это почти похоже на ошибку, что событие onScroll не вызывается в данном конкретном случае, даже если происходят все правильные события (ACTION_DOWN, за которыми следуют многие события ACTION_MOVE).
Может кто-нибудь объяснить, почему событие onScroll не являетсяназывается в этом конкретном случае?