1. 程式人生 > >修復IOS上滑動HTML介面游標亂跳

修復IOS上滑動HTML介面游標亂跳

最近測試人員在測試公司開發的IOS應用時候,IOS是使用混合模式開發,當HTML介面有輸入框的時候,點選輸入後,滑動介面,游標會固定在螢幕上,不會隨著HTML標籤滾動;會出現錯位,截圖如下:

網上說,是因為使用了fixed定位的原因,關鍵是我所有css樣式中都沒有使用fixed定位;所以,只能通過其他路徑解決問題;

多次測試發現,在我們手指移動到combox,等不能聚焦的標籤上,鍵盤會消失,游標自然就不在了,而且不影響滑動;嘗試一下,修改程式碼新增事件:

   document.body.addEventListener('touchstart', function (e) {
        if(document.activeElement)
            document.activeElement.blur();
    }, {passive: false});

測試,游標確實在滑動時不見了,但是每次我點選其它可輸入的標籤時,游標都會隱藏,鍵盤收起;這不是想要的效果,因為這樣雖然解決了樣式的問題,但是會給使用者照成使用不便的問題;然後修改事件toushstart->touchmove:

   document.body.addEventListener('touchmove', function (e) {
        if(document.activeElement)
            document.activeElement.blur();
    }, {passive: false});

測試,滑動時游標不會出現錯位,而是直接隱藏;點選其它輸入框時,游標直接定位到輸入框,鍵盤也不會收起;問題解決,唯一有一點小瑕疵,點選其它輸入框時,游標響應速度有點慢,在考慮是否需要加入FastClick這個Js庫,如果加入的話,下一篇文章會說明