H5页面ios键盘遮挡input问题

完美方案

// 解决输入法被激活时 底部输入框被遮住问题
<textarea type="text" value=""  ref="textarea"  v-model="newMsg"  v-on:focus="focusIpt" v-on:blur="blurIpt"  rows="1" />
data(){
  return{
     timer:null
 }
}
methods: {
   focusIpt() { // 解决输入框被激活时被键盘遮住问题
      this.timer = setInterval(function() {
          document.body.scrollTop = document.body.scrollHeight
       }, 100)
   },
   blurIpt() {
       clearInterval(this.timer)
   }
},
updated(){
       let pannel = this.$refs.textarea;
	//监听输入框,动态增加输入框高度
       pannel.style.height='auto';  
       pannel.style.height = pannel.scrollHeight + 'px';  
}

注意,滑动页面时要 clearInterval(this.timer)
-------------------------------------------------------------------------------------------------------------------------------

最初的做法,用div代替textarea,既没有v-on:focus,也没有v-on:blur,不推荐用div代替textarea,上面已经完美解决input框被挡住问题,也解决textarea自适应高度问题

参考很多资料,目前测试有效,不完全好用,但是解决遮挡问题的方法

<div class="div-textarea" v-model="newMsg" ref="textarea" tabindex="0"  

contenteditable="true"></div>

methods:{
myFocus(){
     let pannel = this.$refs.textarea;
//     pannel.focus();
       console.log("focus")
       setTimeout(function(){
         pannel.scrollIntoView(true);
         pannel.scrollIntoViewIfNeeded();
          document.body.scrollTop = document.body.scrollHeight;
       },100);
//     setInterval( () => {
//     document.body.scrollTop = document.body.scrollHeight;
//     },300)
  }
},
updated(){
     this.myFocus()
}
参考 http://blog.csdn.net/u010884123/article/details/77143228
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值