![](/img/trans.png)
[英]Is there a way to conditionally disable the swipe to go back gesture in react native iOS?
[英]How to disable back swipe gesture in react native navigator
我正在開發一個反應原生的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 }
/>
繁榮。
我在下面解決了它,
在React Project中我有node_modules文件夾。 此路徑上有導航器組件的代碼,
/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js
在該文件中有針對導航的手勢的操作。 通過從屏幕左邊緣滑入時,從那里刪除“彈出”手勢會停止彈回。
只需替換下面的代碼,
var GESTURE_ACTIONS = [
'pop',
'jumpBack',
'jumpForward',
];
使用此代碼,
var GESTURE_ACTIONS = [
'jumpBack',
'jumpForward',
];
場景配置是具有許多可覆蓋屬性的對象。 如果您想從FloatFromBottom開始並禁用手勢,您可以這樣做:
configureScene={() => ({
...Navigator.SceneConfigs.FloatFromBottom,
gestures: {}, // or null
})
使用彈出手勢解除時,組件應該卸載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.