我正在使用disableIntervalMomentum={true}在下一个索引上停止滑块。它对Android有效,但对IOS来说,在快速滚动时,它不会在下一个索引上停止,而是继续移动。
这是我代码
<FlatList
ref={flatListRef}
data={data?.offers || []}
keyExtractor={(item, index) => index.toString()}
horizontal={true}
bounces={(data?.offers || []).length > 1}
pagingEnabled={true}
showsHorizontalScrollIndicator={false}
snapToInterval={!isMultiCard ? snapToInterval : undefined}
onViewableItemsChanged={onViewRef.current}
viewabilityConfig={viewConfigRef.current}
disableIntervalMomentum={true}
decelerationRate={'fast'}
snapToOffsets={isMultiCard && length > 1 ? snapToOffsets : undefined}
scrollEnabled={true}
/>
我添加了disableIntervalMomentum={true},但它不适用于IOS。如果需要更多信息,请告诉我。
2条答案
按热度按时间h5qlskok1#
因此,我认为snapToOffsets正在产生问题(因为它覆盖了pagingEnabled),所以我删除了它,它工作了。
lbsnaicq2#
disableIntervalMomentum
属性用于禁用当用户抛出列表时发生的基于动量的滚动。该属性仅在Android上有效,因为基于动量的滚动不是iOS的功能。要阻止列表滚动到iOS上的下一个索引,您可以尝试使用
snapToInterval
属性。此属性指定用户释放列表时列表应停止的时间间隔。例如,如果snapToInterval值设置为120
,并且用户快速滚动列表并释放它,该列表将在最近的索引处停止,该索引是120
的倍数(即,0、120、240等)。您也可以尝试使用
snapToOffsets
属性,该属性允许您指定列表应该停止的特定偏移量。如果您希望在特定索引处停止列表,而不是在固定间隔处停止列表,则该属性非常有用。