移动端使用better-scroll引发的键盘弹出时,输入框被键盘遮挡事件

本文探讨了软键盘弹出导致viewport高度变化,隐藏界面的问题,并提供了解决方案。通过为input元素添加focus监听,利用better-scroll的scrollToElement方法确保内容跟随输入焦点实时滚动,避免了键盘遮挡问题。
摘要由CSDN通过智能技术生成

分析原因:

软键盘调起引起viewport高度变化,进而影响到了滚动区域容器的高度。容器高度变了,而容器content的scrollTop没变化,表现为原再视图底部的界面被隐藏了,看起来就像是软键盘把它挡住了。

解决方法:

给滚动区域的每一个input标签添加focus监听事件,用以记录当前所操作的input元素。当viewport变化时,window.onresize触发,这时使用better-scroll的scrollToElement方法,使内容滚动到当前操作的input的位置,最好是延时100ms以上开始滚动。

this.scroll.on("refresh", () => { //better-scroll刷新时,input标签可能会有变化,所以重新给input添加focus监听事件
  const inputs = this.$refs["content"].querySelectorAll("input");
  
  inputs.forEach(el => {
    el.removeEventListener("focus", this.fn)
    el.addEventListener("focus", this.fn)
  });

})
window.onresize = () => {    
  setTimeout(() => {
    this.scroll.scrollToElement(this.input, 300, 0, -20)
  }, 200)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值