React Native中Gesture Handler的onBegan不触发怎么办?

小兴敏 阅读 42

我用react-native-gesture-handler写了一个拖拽组件,但onBegan回调一直没执行,只有onStart能触发,是不是API改了?

我查了文档,也试过把onBegan换成onStart,但逻辑对不上。这是我的手势配置:

const dragGesture = Gesture.Pan()
  .onBegan((e) => {
    console.log('began!'); // 这行从没打印过
  })
  .onStart((e) => {
    console.log('start!'); // 这个能正常触发
  });
我来解答 赞 7 收藏
二维码
手机扫码查看
2 条解答
开发者梓希
不是API改了,是你用错了回调。

Pan手势没有onBegan,应该用onBegin。onBegan是Gesture Detector的回调,不是Gesture.Pan()的。

const dragGesture = Gesture.Pan()
.onBegin((e) => {
console.log('begin!'); // 手指一碰到屏幕就触发
})
.onStart((e) => {
console.log('start!'); // 开始移动时触发
});
点赞
2026-03-19 18:05
Tr° 怡博
不是API改了,Pan手势压根没有onBegan回调,只有onStart。你应该是把手势类型搞混了,onBeganTapLongPress那些手势才有的。

Pan的onStart就是在识别出拖拽时触发,你直接用onStart就完事了,逻辑完全对得上。
点赞
2026-03-12 10:00