PageView的onPageScroll在iPhone 12 +上给出了错误的位置



在ReactNative中使用"react-native-pager-view": "^6.1.2"

我有和这里一样的错误。

https://github.com/callstack/react-native-pager-view/issues/503

我正在尝试PagerView与下面粘贴的代码,但当我滑动移动页面,e.nativeEvent.position是不同于实际的页面索引。

import PagerView, { PagerViewOnPageScrollEvent, PagerViewOnPageSelectedEvent } from 'react-native-pager-view';
import Modal from 'react-native-modal';
const onPageScroll = useCallback((e: PagerViewOnPageScrollEvent) => onPageScrollPagerView(e, setCurrentTabIndex), []);
const onPageScrollPagerView = (
e: PagerViewOnPageScrollEvent,
setCurrentTabIndex: React.Dispatch<React.SetStateAction<number>>,
) => {
console.log(`onPageScroll position = ${e.nativeEvent.position}`);
setCurrentTabIndex(e.nativeEvent.position);
};
return (
<Modal isVisible={isVisible}>
<SafeAreaView>
<View>
<PagerView ref={viewPager} initialPage={0} onPageScroll={onPageScroll} onPageSelected={onPageSelected}>
      {list.map((item) => (
     <View key={item.id}>
    {item.content}
     </View>
      ))}
        </PagerView>
</View>
</SafeAreaView>
</Modal> 
);

这是滚动到第一页时获得的结果。onPageScroll被调用两次,由于某种原因第二次返回错误的位置。

0设置为setCurrentTabIndex

onPageScroll position = 1
onPageScroll position = 0

有办法解决这个问题吗?

这可能与你在'react-native-modal'<Modal></Modal>中所写的内容有关。

正如这里所写的,这个问题不会发生在iPhone11上,但在iPhone12和更新的设备上。

我没有使用'react-native-modal',我使用全屏模式。screenOptions={{ presentation: 'modal' }}

最新更新