我正在开发一个水平可滚动列表,每次滑动时它总是滚动整个屏幕(即一个“页面”)。当它位于第一页并且用户再次向右拉动时,我需要刷新整个列表。
对于垂直视图,如果用户在视图位于最顶部位置时向下拉,则会出现ScrollView标准。RefreshControl但对于横版来说,并没有标准的解决方案。
我尝试添加一个PanResponder来捕捉感人和感动的事件。请注意,我VirtualizedList在我的应用程序中使用了 a 。基本逻辑是:
View(其宽度默认设置为 0)ActivityIndicator,其中包含一个,并将此视图作为 插入ListHeaderComponent到VirtualizedListVirtualizedList事件onScroll并不断保存最新的滚动位置PanResponder)时,我使用 ActivityIndicator 对隐藏视图的宽度进行动画处理以模拟 RefreshControl 行为但是,PanResponder无法正确捕获所需的事件。大多数时候,当我在开始处向右拉动时VirtualizedList(在 Android 设备上),只会出现标准的击中边缘动画(出现渐变蓝色层)。
通过添加一些日志,我发现onPanResponderGrant偶尔会触发,但onPanResponderMove、onPanResponderRelease、onPanResponderTerminate或 都onPanResponderTerminationRequest不会被触发。
触发时onPanResponderGrant,隐藏ActivityIndicator偶尔会部分出现。“向右拉”效果只会很快出现,并且总是立即停止,只出现隐藏视图的非常狭窄的部分。
我猜底层ScrollView窃取了事件并阻止我的代码响应。但即使我设置onPanResponderTerminationRequest总是返回false仍然无济于事。即使我直接用VirtualizedList …