react-native: [ScrollView] Children in a ScrollView don't always cancel touches when the ScrollView is scrolling
When scrolling through a ListView with lots of content, sometimes it is possible to trigger the onPress
event of a Touchable row. The ListView keeps on scrolling while the onPress
handler runs.
(In our code, the resulting UX is janky for a few reasons: 1/ this usually happens when new list rows are being rendered, so the UI is already a little choppy, 2/ the onPress
handler in our case pushes a new route onto the Navigator stack, so it’s trying to smoothly animate the scene transition, 3/ the ListView keeps on scrolling with inertia so you lose your position in the feed when you navigate back to it, 4/ because the ListView is scrolling and rendering new rows, that adds jank to the Navigator’s ongoing transition.)
It seems to occur when the app chokes (not quite sure which thread). I suspect the JS doesn’t learn that the ScrollView has begun scrolling, so it lets the Touchable component handle the press.
About this issue
- Original URL
- State: closed
- Created 9 years ago
- Comments: 36 (14 by maintainers)
There is a dirty way that I’ve found to bypass this case temporarily:
But looking forward to real solutions.