有没有办法在React Native iOS中有条件地禁用向后滑动手势?

4

我正在寻找一种在React Native iOS中有条件地禁用向后滑动手势的方法。 我使用react-navigation库来控制导航。 对于Android,我可以使用BackHandler来实现。 在iOS中是否可能做类似的事情?

  componentDidMount() {
      BackHandler.addEventListener("hardwareBackPress", this.handleBackButton);
  }

  handleBackButton = () => {
    if (this.props.creating) {
      return true; // Disables the back button in Android
    }
  };

  componentWillUnmount() {
      BackHandler.removeEventListener(
        "hardwareBackPress",
        this.handleBackButton
      );
  }

你尝试过我的答案了吗? - user9408899
3个回答

4

这将完全禁用屏幕手势。但是我正在尝试仅在 this.props.creating 为 true 时禁用手势。 - Arun Kumar
如果您依赖于 prop,我会认为它来自上层作用域。在 Navigator/Screen 级别上可以有条件地禁用滑动返回。 - Andrii Malykhin

0

StackNavigator takes navigationOptions 表示“用于屏幕的默认导航选项”

例如:

 const RootStackNavigator = StackNavigator(
  {
    Login: {
      screen: LoginScreen
    },
    Main: {
      screen: MainScreen
    }
  },
  {
    initialRouteName: 'Login',
    navigationOptions: {
      gesturesEnabled: false   // <- add this line
    }
  }
);

0
但我只想在 this.props.creating 为 true 时禁用手势。
尝试将此静态方法添加到组件中。
   static navigationOptions = props => {
      return {
        gesturesEnabled: this.props.creating ? false : true
      }
    };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接