У меня есть ситуация, которая требует от меня обнаружения, когда представление прокрутки (ScrollView, FlatList или другой компонент) полностью завершило действие прокрутки, то есть и пользователь прекратил прокрутку, и любая прокрутка импульса закончилась.
Проблема заключается в том, что нет события, которое запускается, когда прокрутка полностью завершена, вместо этого предоставляются два обратных вызова событий onScrollEnd
и onMomentumScrollEnd
- ни один из которых не гарантированно будет вызван.
Вызов любых scrollTo*
методов в экземплярах прокручиваемых компонентов не вызовет ни одно из этих событий.
Прокрутка пользователя всегда будет вызывать onScrollEnd
, но она может не вызывать onMomentumScrollEnd
при импульсе отключен, или если они не выполняют прокрутку импульса (например, когда поднимают палец, не делая больше прокрутки).
Использование одной и той же функции для выполнения одинаковых действий как на onScrollEnd
, так и на onMomentumScrollEnd
события, создающие странные визуальные артефакты из-за повторного рендеринга и анимации компонентов на экране.
Использование setTimeout () для ожидания x времени, чтобы рассмотреть завершение прокрутки, не помогает, потому что, если импульс очень низкий, прокрутка может фактически занять несколько секунд, но в других случаях это может занять всего несколько сотен миллисекунд.
Определение смещения прокрутки дочерних элементов не работает, поскольку я не связываю конец прокрутки с фактическим началом / концом границ прокрутки.
Кто-нибудь знает, как я могу обнаружить фактический конец свитка?