React Native中Gesture Handler的onGestureEvent不触发是怎么回事?
我在用react-native-gesture-handler做自定义拖拽,但onGestureEvent完全没反应,控制台也不打印。试过加了GestureHandlerRootView,也确认装了原生依赖,就是没效果。
这是我的代码:
import { PanGestureHandler } from 'react-native-gesture-handler';
<PanGestureHandler
onGestureEvent={(e) => {
console.log('gesture', e.nativeEvent);
}}
>
<View style={{ width: 100, height: 100, backgroundColor: 'red' }} />
</PanGestureHandler>
PanGestureHandler的children必须是一个可以响应触摸的组件,而且只能是一个。你现在这样写:
这样写是对的,View确实可以响应触摸。但还有一个常见坑——GestureHandlerRootView必须包裹最外层,而且如果你的应用有多个GestureHandlerRootView可能会有冲突。
试试改成这样,确保GestureHandlerRootView在最外层:
如果还是不行,检查一下你的react-native-gesture-handler版本。如果是v2.x,API有些变化,可能需要用Gesture.Pan()配合GestureDetector,或者确认你的children View确实能被触摸(有些情况需要设置hitSlop)。
还有一点,你确定控制台没有其他错误吗?有时候原生依赖没装好会静默失败,但可能会有warning。