реагировать родной, как определить фактическое завершение действия прокрутки? - PullRequest
0 голосов
/ 20 января 2020

У меня есть ситуация, которая требует от меня обнаружения, когда представление прокрутки (ScrollView, FlatList или другой компонент) полностью завершило действие прокрутки, то есть и пользователь прекратил прокрутку, и любая прокрутка импульса закончилась.

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

Вызов любых scrollTo* методов в экземплярах прокручиваемых компонентов не вызовет ни одно из этих событий.

Прокрутка пользователя всегда будет вызывать onScrollEnd, но она может не вызывать onMomentumScrollEnd при импульсе отключен, или если они не выполняют прокрутку импульса (например, когда поднимают палец, не делая больше прокрутки).

Использование одной и той же функции для выполнения одинаковых действий как на onScrollEnd, так и на onMomentumScrollEnd события, создающие странные визуальные артефакты из-за повторного рендеринга и анимации компонентов на экране.

Использование setTimeout () для ожидания x времени, чтобы рассмотреть завершение прокрутки, не помогает, потому что, если импульс очень низкий, прокрутка может фактически занять несколько секунд, но в других случаях это может занять всего несколько сотен миллисекунд.

Определение смещения прокрутки дочерних элементов не работает, поскольку я не связываю конец прокрутки с фактическим началом / концом границ прокрутки.

Кто-нибудь знает, как я могу обнаружить фактический конец свитка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...