簡體   English   中英

如何在反應原生導航器中禁用反向滑動手勢

[英]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;
   }
};

正常的Horizo​​ntalSwipeJump仍然有一個反向掃描,自定義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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM