react native 使用 KeyboardAvoidingView 无效

组件介绍:

该组件将根据键盘高度自动调整其高度、位置或底部填充,以在显示虚拟键盘时保持可见。

官方文档:

KeyboardAvoidingView 文档地址

遇到的问题:

  1. KeyboardAvoidingView 标签要设置 behavior={Platform.OS === "ios" ? "padding" : "height"},iOS系统要使用padding否则样式可能会达不到预期效果。
  2. KeyboardAvoidingView 包裹的内容最外层的盒子的 justifyContent 需要设置为 flex-end、space-around 等(具体使用哪个要根据需求确定),默认的 flex-start 会导致不生效。
  3. KeyboardAvoidingView 包裹的内容最外层的盒子的高度设置为 100% 时,或者设置 flex:1 时,也可能会导致无效(在我的项目里出现了这个问题)。

官方示例代码:

import React from 'react';
import {
View,
KeyboardAvoidingView,
TextInput,
StyleSheet,
Text,
Platform,
TouchableWithoutFeedback,
Button,
Keyboard,
} from 'react-native';
const KeyboardAvoidingComponent = () => {
return (
<KeyboardAvoidingView
behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
style={styles.container}>
<TouchableWithoutFeedback onPress={Keyboard.dismiss}>
<View style={styles.inner}>
<Text style={styles.header}>Header</Text>
<TextInput placeholder="Username" style={styles.textInput} />
<View style={styles.btnContainer}>
<Button title="Submit" onPress={() => null} />
</View>
</View>
</TouchableWithoutFeedback>
</KeyboardAvoidingView>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
},
inner: {
padding: 24,
flex: 1,
justifyContent: 'space-around',
},
header: {
fontSize: 36,
marginBottom: 48,
},
textInput: {
height: 40,
borderColor: '#000000',
borderBottomWidth: 1,
marginBottom: 36,
},
btnContainer: {
backgroundColor: 'white',
marginTop: 12,
},
});
export default KeyboardAvoidingComponent;
posted @   Li_pk  阅读(757)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示