ios H5 頁面彈窗被軟鍵盤上推頁面卡死問題

首先描述一下問題場景:
在iso下的H5頁面作了一個彈窗,彈窗內帶輸入框,給用戶註冊
會員用。可是測試發現輸入框失去焦點時,頁面沒有回彈整個界面
卡死。如圖!

手機圖

我用的不是IOS手機 只是展現一下問題場景,有一樣狀況的纔可
對症下藥繼續往下看。
而後引用一下啊一個大佬的文章也是我在解決這個問題時候看到的

原理講解連接vue

這篇文章詳解了爲何會出現這種狀況,坐着也給出瞭解決辦法,
可是對於多個輸入框,我我的通過嘗試,找到了一種新的辦法,
由於若是如文章中每次都去滾動內容,交互體驗方面會形成影響。
我所在項目是基於uni的一些已經封裝過的input組件。
源生的這個辦法也會通用。

先上input寫法
<input style="flex:1" @blur="onBlur" @focus="inputFocus" type="text" placeholder="請輸入手機號"/>post

vue內的方法
 inputFocus() {
        // #ifdef  H5
        this.hasDown=true;
        // #endif
    },
    
    onBlur(){
        // #ifdef  H5
        this.hasDown=false;
        setTimeout(() => {
            if(!this.hasDown){
                window.scrollTo(0,0);
                document.getElementsByTagName('body')[0].scrollTop = 0;
            }
        }, 200);
            // #endif
    },
    而後說一下原理,其實原理很簡單,爲了避免影響用戶體驗,
    不會再每次失去焦點的時候推進屏幕,而是作了200毫秒的延時
    也就是說用戶在失去焦點,可是沒有繼續得到焦點的狀況下
    纔會去推進屏幕。正好適合面對多個輸入框的狀況。
相關文章
相關標籤/搜索