You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

打开drawer时如何隐藏keyboard,现有代码无法生效该如何修复?

修复方案

核心问题是你在onPress回调中没有实际执行键盘收起方法:Keyboard.dismiss是方法对象,你没有加调用括号,所以代码运行时只会读取这个方法的引用,不会触发执行逻辑。

修正后的代码

useLayoutEffect(() => {
  navigation.setOptions({
    headerTitleAlign:'center',
    headerLeft:() =>(
      /*open drawer and dismiss keyboard*/
      <TouchableWithoutFeedback onPress={() =>{
        Keyboard.dismiss() // 加括号执行方法
        navigation.openDrawer()
      }}>
        <View style={styles.menuIcon}>
          <MaterialIcon name="menu" size={30} />
        </View>
      </TouchableWithoutFeedback>
    ),

可选优化(避免动画冲突)

如果出现键盘收起和抽屉打开的动画叠加出现卡顿的情况,可以调整执行顺序,等键盘完全收起后再打开抽屉:

onPress={() => {
  Keyboard.dismiss()
  // 加100ms延迟匹配键盘收起动画时长
  setTimeout(() => {
    navigation.openDrawer()
  }, 100)
}}

内容的提问来源于stack exchange,提问作者Chee Thong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:27:01