我有一个FlatList
,它使用scrollToIndex
函数根据时间序列自动逐项滚动。我还想让用户自己滚动列表,并在发生这种情况时暂时禁用自动滚动。
我的想法是使用onScroll
事件在用户滚动列表并设置布尔标志时捕获。问题在于onScroll
也触发了scrollToIndex
事件。
有没有简单的方法解决这个问题?
答案 0 :(得分:1)
一种解决方法可以使用标志集(例如,使用组件类的this.disableOnScrollEvent = true)
function onScrollToIndexHandler() {
this.disableOnScrollEvent = true
// remaining code
}
function onScrollEventHandler(event){
if(this.disableOnScrollEvent){
this.disableOnScrollEvent = false;
return;
}
// remaining code
}
答案 1 :(得分:0)
您可以使用一种名为“ onMomentumScrollEnd”的方法,该方法对于触摸交互而言应该是唯一的。有了它,您可以消除抖动或禁用计时器。不过,您必须测试定时的scrollToIndex函数是否具有优先于用户交互的功能。在这种情况下,您必须将PanResponder添加到包含的视图中,并从其“ onPanResponderGrant”方法中禁用/删除计时器。