初次解決方式是通過固定頁面不在軟鍵盤彈出的時候被頂起
用css樣式固定,如下:
body {
position: fixed;
top: 0;
left: 0;
}
但是修改又出現新的問題:
雖然ios手機在收起軟鍵盤後頁面沒有因被頂起不下滑導致底部留白,卻導致原本彈出的輸入框的確定按鈕在軟鍵盤收起後點擊無效了。
最終的解決方式如下:
在頁面添加js代碼:
let u = window.navigator.userAgent;
let res = {
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否為移動終端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios終端
android: u.indexOf("Android") > -1 || u.indexOf("Linux") > -1, //android終端或者uc瀏覽器
iPhone: u.indexOf("iPhone") > -1,
iPad: u.indexOf("iPad") > -1 //是否为iPad
};
if (res.iPhone || res.iPad) { //判斷當input失去焦點的時候,主動滾動
$('body').on('touchend', function (el) {
if (el.target.tagName != 'INPUT') {
$('input').blur(function () {
document.body.scrollTop = document.body.scrollHeight;
})
}
})
document.body.addEventListener('focusout', () => { //软键盘关闭事件
console.log("键盘收起");
document.body.scrollTop = 0;
document.documentElement.scrollTop=0;
});
}
添加了判斷當input失去焦點的時候,頁面主動滾動,成功解決問題,在彈出的輸入框中設置所需內容,點擊ios手機的軟鍵盤完成按鈕,收起軟鍵盤,最後點擊彈出框的確定按鈕,實現所需操作功能,整個流程,頁面顯示正常,功能正常實現。
但後續發現點擊ios手機頁面彈出的數據框設置後的確定按鈕後,軟鍵盤自動收起,但頁面底部也會留空,所以添加了軟鍵盤關閉事件,在鍵盤自動被收起時,讓頁面自動回滾歸位。
ps:用position: fixed;效果不佳,頁面內容滑動瀏覽會卡頓幾秒
參考如下資料:
js判斷移動,pc端,ios終端,android終端,iphone,iPad 等:
ios软键盘顶起页面后隐藏不回弹解决方案
https://blog.csdn.net/qq_23370345/article/details/84757505
ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。
https://www.cnblogs.com/xiongzaiqiren/p/10505490.html