在ios中,輸入框被軟鍵盤遮住,這是衆所周知的bug,那麼如何來解決這個問題呢?最近的項目中就遇到了這個問題,然後經過高人指點解決了這個問題,以及遇到的另外一些問題。
首先我們先來說說彈出軟鍵盤,在ios中,彈出軟鍵盤,會將整個頁面給懟上去,因此我們只能看到半個頁面,然而在andriod中,整個網頁高度會縮小,因此我們在彈出軟鍵盤時,能夠監聽到andriod的窗口大小變化——resize事件,但是ios中,resize事件卻沒有發生,因爲窗口大小沒有發生變化。
ios中彈出軟鍵盤後,有時會遮住我們定位在底部的輸入框,最近的項目中就遇到了各種ios的坑,哎!
html代碼如下:
<div class="bottomInput">
<input id="msgdata" type="text"></input>
<button id="btn" class="wxapp-add-btn" >發送</button>
</div>
js代碼如下:
var interval;
function scrollToEnd(){
document.body.scrollTop = document.body.scrollHeight;
}
$("#msgdata").on("focus",function (e) {
interval = setInterval(function() {
scrollToEnd();
}, 500)
})
$("#msgdata").on("blur",function (e) {
clearInterval(interval);
})
$("#btn").on("touchend",function (e) {
e.preventDefault();
alert("消息發送");
})
經過測試,iphone 6s是可行的,後來在6s plus中卻遇到問題,如果是使用系統自帶的輸入法,輸入英文是沒問題的,但是輸入中文卻遇到了bug。輸入中文,點擊發送不能執行,軟鍵盤收回,再次點擊發送才能執行發送事件。而且還發現點擊輸入框,獲得焦點,再點擊輸入框會失去焦點,遇到這個問題,就尷尬了!後來又拿了別的6s plus來測試,在另一臺手機上發現,能夠輸入中文啊,經過對比發現,兩個手機的輸入法不同,正常點擊發送的手機的輸入法是第三方輸入法。
那麼問題就出現在這裏了,蘋果自帶輸入法對中文的一個支持問題。怎麼辦呢?用第三方輸入法吧!