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

我正在开发一个iOS应用程序在本机反应。 我使用了反应原生的Navigator组件。 当我将用户从一个屏幕推到另一个屏幕时,用户可以通过在屏幕左侧滑动来popup屏幕。 我知道如何在本机iOS代码中禁用它。 但是,有什么方法可以阻止React-native应用程序中的行为。

谢谢,

这是伟大的方式来做到这一点。

你不需要破解节点模块!

定义一个新的场景configuration。

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

您可以复制已写入的任何SceneConfig,只需将popup手势设置为{}即可。

这样它只会影响你想要的场景,而且你仍然可以使用所有的默认configuration。

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

正常的Horizo​​ntalSwipeJump仍然有一个backswipe,并且自定义的NoBackSwipe不允许向后滑动…

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

繁荣。

场景configuration是对象中有许多可覆盖的属性。 如果你想从FloatFromBottom开始并禁用手势,你可以这样做:

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

使用popup手势解散组件时应该卸载组件。

我下面解决它,

在React项目中我有node_modules文件夹。 在这条path上有Navigator组件的代码,

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

在那个文件中有导航上的手势动作。 从屏幕的左边缘滑入时,通过从中删除“stream行”手势停止回弹。

只需replace下面的代码,

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

用这个代码,

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