解决 - 移动端(H5) ios 在点击input输入框,弹起软键盘后,顶部输入框失效的问题

在移动端H5开发中遇到一个问题,在iOS设备上,当点击input输入框弹出软键盘后,顶部的输入框定位失效。安卓设备表现正常。解决方案是监听触摸事件,当点击或滑动时触发输入框失去焦点(blur),使软键盘消失,防止页面被撑高。

问题:
在项目开发过程中发现这个问题,在安卓下是正常的,ios固定定位就会失效,在网上看了许多ios兼容的博客,都没有效果,卡了很久,
ios 的软键盘弹出后,会把页面撑高.他就不在原来的位置定位了
后面同事提了个思路,当我点击搜索框的时候,会弹出软键盘,往上滑的话,搜索框也会跟着滑走,那我们就在滑动上做文章.往上滑的时候(或者点击屏幕的时候) 让软键盘消失就ok了,那么页面就不会被撑高了

vue开发代码

mounted () {
    document.body.addEventListener('touchstart',function () {
        document.getElementsByClassName('van-field__control')[0].blur()
      }, { passive: false })
  },

这里是用有赞的vant组件库开发的,里面的van-field__contro是组件 < van-search >

原理: 搜索框的焦点事件
focus(): 会弹出软键盘
blur():软键盘会消失

通过监听触摸事件 touchstart (触摸开始,多点触控) 或者 touchmove (接触点改变,滑动时)
来让焦点消失,从而达到让软键盘消失

求点赞,评论,收藏,关注

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值