【问题标题】:gesturesEnabled: false doesn't work for my react-navigation setup手势启用:假不适用于我的反应导航设置
【发布时间】:2017-06-21 12:33:07
【问题描述】:
    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 中滑回 LoginScreen!

【问题讨论】:

    标签: react-native react-navigation


    【解决方案1】:

    这是我的代码:

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

    你应该将gesturesEnabled放在cardStack中。

    【讨论】:

    • 所以将其更改为模态解决了它,现在屏幕是否可以正常转换(如卡片)?从右到左?谢谢!
    • 是的,它会像卡片一样正常转换,从右向左滑动
    • 您将模式设置为模态,这就是它从下方膨胀的原因
    • 同样的东西,不同的形式:
    【解决方案2】:
    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;
    

    只在你不想返回的屏幕中导入这个函数

    【讨论】:

    • 一般来说,如果答案包含对代码的用途的解释,以及为什么在不介绍其他人的情况下解决问题的原因,答案会更有帮助。
    【解决方案3】:

    您需要将gesturesEnabled 属性移到navigationOptins 之外:

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

    【讨论】:

    • 还是没有运气,正在考虑重置堆栈,所以它没有回去的地方!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多