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

时间:2016-06-27 10:06:21

标签: ios react-native

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

谢谢,

3 个答案:

答案 0 :(得分:13)

这是一个很好的方法。

您不需要破解节点模块!!

定义新的场景配置。

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;
   }
};

普通的Horizo​​ntalSwipeJump仍然有一个反向扫描,而自定义NoBackSwipe不允许反刷......

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

吊杆。

答案 1 :(得分:1)

我在下面解决了它,

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

  

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

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

只需替换下面的代码,

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

使用此代码,

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

答案 2 :(得分:0)

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

{{ b.name }}

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