我正在开发一个反应原生的iOS应用程序 . 我使用了反应原生的Navigator组件 . 当我将用户从一个屏幕推送到另一个屏幕时,用户可以通过在屏幕左边缘轻扫来弹出屏幕 . 我知道如何在本机iOS代码中禁用它 . 但是,我们有什么办法可以在React-native app中停止这种行为 .
谢谢,
这是一个很好的方法 .
你不需要破解节点模块!
定义新的场景配置 .
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 } />
繁荣 .
场景配置是具有许多可覆盖属性的对象 . 如果您想从FloatFromBottom开始并禁用手势,您可以这样做:
configureScene={() => ({ ...Navigator.SceneConfigs.FloatFromBottom, gestures: {}, // or null })
使用弹出手势解除时,组件应该卸载 .
我在下面解决了它,
在React Project中我有node_modules文件夹 . 此路径上有导航器组件的代码,
/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js
在该文件中有针对导航的手势的操作 . 通过从屏幕左边缘滑入时,从那里删除“弹出”手势会停止弹回 .
只需替换下面的代码,
var GESTURE_ACTIONS = [ 'pop', 'jumpBack', 'jumpForward', ];
使用此代码,
var GESTURE_ACTIONS = [ 'jumpBack', 'jumpForward', ];
3 回答
这是一个很好的方法 .
你不需要破解节点模块!
定义新的场景配置 .
您可以复制他们编写的任何SceneConfig,并将弹出手势设置为{} .
这样它只会影响你想要的场景,你仍然可以使用所有的默认配置 .
正常的HorizontalSwipeJump仍然有一个反向扫描,自定义NoBackSwipe不允许反向滑动...
繁荣 .
场景配置是具有许多可覆盖属性的对象 . 如果您想从FloatFromBottom开始并禁用手势,您可以这样做:
使用弹出手势解除时,组件应该卸载 .
我在下面解决了它,
在React Project中我有node_modules文件夹 . 此路径上有导航器组件的代码,
在该文件中有针对导航的手势的操作 . 通过从屏幕左边缘滑入时,从那里删除“弹出”手势会停止弹回 .
只需替换下面的代码,
使用此代码,