在做公司的混合app时 有一个点击按钮弹出一个固定定位在底部的弹出层,只有弹出层时没问题 可是弹出层里需要输入数据,就造成了bug 输完数据关闭软键盘后,软键盘的位置会显示空白 遮挡住弹出层,并且弹出层无法被点击,经过查阅,监听软键盘的弹出和关闭事件 关闭时把页面滑动一下即可恢复正常 但是有点生硬 总比以前强了
写在vue的mounted里即可
let u = navigator.userAgent;
let flag;
let myFunction;
let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
if(isIOS){
document.body.addEventListener('focusin', () => { //软键盘弹起事件
flag=true;
clearTimeout(myFunction);
})
document.body.addEventListener('focusout', () => { //软键盘关闭事件
flag=false;
if(!flag){
myFunction = setTimeout(function(){
window.scrollTo({top:0,left:0,behavior:"smooth"})//重点 =======当键盘收起的时候让页面回到原始位置(这里的top可以根据你们个人的需求改变,并不一定要回到页面顶部)
},200);
}else{
return
}
})
}else{
return
}