首页 文章

如何在反应原生导航器中禁用反向滑动手势

提问于
浏览
2

我正在开发一个反应原生的iOS应用程序 . 我使用了反应原生的Navigator组件 . 当我将用户从一个屏幕推送到另一个屏幕时,用户可以通过在屏幕左边缘轻扫来弹出屏幕 . 我知道如何在本机iOS代码中禁用它 . 但是,我们有什么办法可以在React-native app中停止这种行为 .

谢谢,

3 回答

  • 0

    这是一个很好的方法 .

    你不需要破解节点模块!

    定义新的场景配置 .

    const NoBackSwipe ={
      ...Navigator.SceneConfigs.HorizontalSwipeJump,
        gestures: {
          pop: {},
        },
    };
    

    您可以复制他们编写的任何SceneConfig,并将弹出手势设置为{} .

    这样它只会影响你想要的场景,你仍然可以使用所有的默认配置 .

    _configureScene(route){
       switch (route.name){
         case 'Foo':
           return NoBackSwipe
           break;
         case 'Bar':
           return Navigator.SceneConfigs.HorizontalSwipeJump
           break;
       }
    };
    

    正常的HorizontalSwipeJump仍然有一个反向扫描,自定义NoBackSwipe不允许反向滑动...

    <Navigator 
     ...other props...
     configureScene={ this._configureScene }
    />
    

    繁荣 .

  • 13

    场景配置是具有许多可覆盖属性的对象 . 如果您想从FloatFromBottom开始并禁用手势,您可以这样做:

    configureScene={() => ({
      ...Navigator.SceneConfigs.FloatFromBottom,
      gestures: {}, // or null
    })
    

    使用弹出手势解除时,组件应该卸载 .

  • 0

    我在下面解决了它,

    在React Project中我有node_modules文件夹 . 此路径上有导航器组件的代码,

    /node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js

    在该文件中有针对导航的手势的操作 . 通过从屏幕左边缘滑入时,从那里删除“弹出”手势会停止弹回 .

    只需替换下面的代码,

    var GESTURE_ACTIONS = [
      'pop',
      'jumpBack',
      'jumpForward',
    ];
    

    使用此代码,

    var GESTURE_ACTIONS = [
      'jumpBack',
      'jumpForward',
    ];
    

相关问题