navigator的向右滑Pop的手势怎么禁用?



  • navigator的向右滑Pop的手势怎么禁用?



  • 看一下navigator的configureScene,这里可以配置



  • @xcy1231 请问如何做呢?我看了没这个配置呀,能帮忙写一下吗?



  • <Navigator style = {{flex: 1}}
    initialRoute={{
    component: Main,
    title: 'Main',
    }}
    configureScene={(route) => {
    return Navigator.SceneConfigs.FloatFromRight
    }}
    renderScene={(route, navigator) => {
    return <route.component navigator={navigator} {...route} {...route.passProps}/>
    }}/>
    这里的configureScene返回的FloatFromLeft实际上是{
    ...BaseConfig,
    gestures: {
    pop: BaseRightToLeftGesture,
    },
    animationInterpolators: {
    into: buildStyleInterpolator(FromTheLeft),
    out: buildStyleInterpolator(FadeToTheRight),
    },
    },
    这里可以看到手势的配置,实际上看看Navigator的源码就清楚了,但是如果你用的是NavigatorIOS就另说了,那个只是iOS原生控件的一个包装,可定义的东西很少,如果一定要用那个的话估计就要自己去实现了



  • @xcy1231 感谢

    我这里没有用到NavigatorIOS,NavigatorIOS本身就有禁用这个手势的属性

    我还是没明白这个地方该怎么操作,才能禁用这个手势



  • @Tearstains 你可以自己定义一个 SceneConfigs,然后将 gestures 的 pop 禁用掉:

    const FloatFromRightDisabledPop = {
      ...FloatFromRight,
      gestures: { pop: false }
    };
    

    然后再使用该配置即可:

    configureScene={(route) => {
        return FloatFromRightDisabledPop
    }}
    


  • 此回复已被删除!


  • var MySceneConfigs = Navigator.SceneConfigs.PushFromRight;
    MySceneConfigs.gestures.pop = null;

    然后使用就可以了
    configureScene={(route, routeStack) => MySceneConfigs}


登录后回复