有没有办法在反应原生 iOS 中有条件地禁用滑动返回手势?
Posted
技术标签:
【中文标题】有没有办法在反应原生 iOS 中有条件地禁用滑动返回手势?【英文标题】:Is there a way to conditionally disable the swipe to go back gesture in react native iOS? 【发布时间】:2019-10-22 11:45:39 【问题描述】:我正在寻找一种方法来有条件地禁用滑动返回手势以响应原生 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
);
【问题讨论】:
你试过我的答案了吗? 【参考方案1】:是的,有一个禁用手势的选项:
screen: ExampleView
navigationOptions:
gesturesEnabled: false,
,
在此处查看更多详细信息:https://github.com/react-navigation/react-navigation/issues/1063
【讨论】:
这将完全禁用屏幕手势。但我试图仅在this.props.creating
为真时禁用手势。
如果您依赖prop
,我会假设它来自上层范围。可以在Navigator/Screen
级别上禁用有条件的回扫【参考方案2】:
但我试图仅在 this.props.creating 为 真的。
尝试将此静态方法添加到您的组件中。
static navigationOptions = props =>
return
gesturesEnabled: this.props.creating ? false : true
;
【讨论】:
【参考方案3】:StackNavigator takes navigationOptions 代表“用于屏幕的默认导航选项”
例子:
const RootStackNavigator = StackNavigator(
Login:
screen: LoginScreen
,
Main:
screen: MainScreen
,
initialRouteName: 'Login',
navigationOptions:
gesturesEnabled: false // <- add this line
);
【讨论】:
以上是关于有没有办法在反应原生 iOS 中有条件地禁用滑动返回手势?的主要内容,如果未能解决你的问题,请参考以下文章