打开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
相关产品推荐
相关产品推荐

