gesturesEnabled: false 不适用于我的反应导航设置

gesturesEnabled: false doesn't work for my react-navigation setup

    export const AppNavigator = StackNavigator({
        [strings.route_login]: {
            screen: LoginScreen,
        },
        [strings.route_main]: {
            screen: MainNavigator,
            navigationOptions: {
                gesturesEnabled: false,
            }
        },
    },
    {
        headerMode: "none",
        navigationOptions: {
            gesturesEnabled: false,
        }
    }
);

我还想提一下,MainNavigator 是一个 DrawerNavigator,它的所有子项都关闭了 gesturesEnabled!不幸的是,我仍然可以在 ios!

中滑回登录屏幕

您需要将 gesturesEnabled 道具移到 navigationOptins 之外:

export const AppNavigator = StackNavigator({
        [strings.route_login]: {
            screen: LoginScreen,
        },
        [strings.route_main]: {
            screen: MainNavigator,
            navigationOptions: {
                gesturesEnabled: false,
            }
        },
    },
    {
        headerMode: "none",
        gesturesEnabled: false,
    }
);

这是我的代码:

export const AppNavigator = StackNavigator(MainAppRoutes, {
 initialRouteName: 'firstscene',
 headerMode: 'screen',
 mode: Platform.OS === 'ios'
  ? 'modal'
  : 'card',
 navigationOptions: {
  cardStack: {
   gesturesEnabled: false
  }
 }
});

您应该将 gesturesEnabled 放在 cardStack 中。

import React from 'react';

import { Alert, BackHandler } from 'react-native';
import { useFocusEffect } from '@react-navigation/native';

const BackButtonExitHandler = () => {
  useFocusEffect(
    React.useCallback(() => {
      const backAction = () => {
        Alert.alert('Exit Application!', 'Are you sure you want to exit ?', [
          {
            text: 'Cancel',
            onPress: () => null,
            style: 'cancel',
          },
          { text: 'Exit', onPress: () => BackHandler.exitApp() },
        ]);
        return true;
      };

      const backHandler = BackHandler.addEventListener(
        'hardwareBackPress',
        backAction
      );

      return () => backHandler.remove();
    }, [])
  );
};

export default BackButtonExitHandler;

在你不想返回的画面导入这个功能就可以了