我正在开发一个反应原生的iOS应用程序。我使用了反应原生的Navigator组件。当我将用户从一个屏幕推送到另一个屏幕时,用户可以通过在屏幕左边缘轻扫来弹出屏幕。我知道如何在本机iOS代码中禁用它。但是,有什么方法可以在React-native app中停止这种行为。
谢谢,
答案 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;
}
};
普通的HorizontalSwipeJump仍然有一个反向扫描,而自定义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 }}
使用弹出手势解除时,组件应该卸载。