反应本地手势处理程序不触发事件

时间:2019-02-27 11:54:04

标签: android react-native expo

我正在尝试使用react-native-gesture-handler库中的PanGestureHandler组件。

其背后的主要原因是将处理移开了JS线程。

我正在构建的应用程序在Expo中,但是在发现Expo的输出不是特别友好的打字稿之后,我选择直接使用该库。

到目前为止,我似乎无法触发这些事件。本质上,我试图使用平移手势来调用导航更改,但想了解我每次从该库向左或向右滑动时获得的值,以确定要采用的正确路线。

我的出发点很简单:

<PanGestureHandler
    onGestureEvent={event => console.log('onGestureEvent', { event })}
    onHandlerStateChange={event => console.log('onHandlerStateChange', { event })}
>
    <Animated.View style={{ flex: 1, backgroundColor: 'pink' }} />
</PanGestureHandler>

我希望控制台会显示标准事件对象,但是当我输入滑动手势时绝对不会发生任何事情。

这与正在为此项目构建的Android特别相关,我在模拟器和实际设备上都得到了相同的响应。

非常感谢任何指针。

1 个答案:

答案 0 :(得分:1)

我已通过以下步骤对其进行了修复

Do change in MainActivity

+ import com.facebook.react.ReactActivityDelegate;
+ import com.facebook.react.ReactRootView;
+ import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;

+  @Override
+  protected ReactActivityDelegate createReactActivityDelegate() {
+    return new ReactActivityDelegate(this, getMainComponentName()) {
+      @Override
+      protected ReactRootView createRootView() {
+       return new RNGestureHandlerEnabledRootView(MainActivity.this);
+      }
+    };
+  }