React Native防止键盘遮挡输入框 解决方案

方法一: 安卓自带的效果 用Container,Content 控件包裹着就可以了,效果不好 会把顶部导航,底部导航给顶上去,画面不美观
方法二:用KeyboardAvoidingView 包裹着 效果跟方法一一样,画面不美观
如图:
在这里插入图片描述在这里插入图片描述

方法三:用Keyboard,ScrollView控件 计算需要滚动的高度

需要的代码如下:
–监听键盘显示事件

componentWillMount(){
 		this.keyboardWillHideListener =  Keyboard.addListener('keyboardDidHide',this._keyboardDidHide.bind(this));     
 }

–键盘显示的逻辑

_keyboardDidHide(e) {
	  this.setState({
	      keyboardVis:false--设定一个空白view 目的是顶起input 
	  });
	}

–删除监听

componentWillUnmount(){
  		this.keyboardWillHideListener && this.keyboardWillHideListener.remove();
}

– 绑定滚动

  <ScrollView style={{height:screenHeight-240}} ref={(view) => { this.myScrollView = view; }}>
  ........
  </ScrollView >

–点击input 设定scroll条逻辑

clickToScroll = () => {
	    this.myScrollView.scrollToEnd({ animated: false}); --滚动到对底部	       
	}

– 设定空白VIew高度
–目的是顶起input 让input在键盘上方 height 根据自己的条件设定

`{  this.state.keyboardVis && <View style={{height:170}}/>}

–调用事件

<View onTouchStart={(e)=>{this.setState({keyboardVis:true})}}>       
	   <Input 
	       autoCapitalize="none"
	       value={_state.addr}
	       placeholder={I18n.t('Account.Enter')}
	       placeholderTextColor={'#7A7E83'}
	       onFocus = {v => this.clickToScroll()}            
	       onChangeText={v => this.handleChange('addr', v)}
	       style={styles.TextInput} />
</View>

效果如下:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值