iOS相關bug

一、iOS12鍵盤輸入后不回彈

問題描述

iOS12系統(tǒng)下,h5或webview頁面存在bug,鍵盤輸入完畢收回后,頁面不會回彈恢復至之前位置,底下出現空白區(qū)域,并導致光標位置錯亂,再次點擊輸入框區(qū)域時無法focus或觸發(fā)其他區(qū)域focus,彈框按鈕也無法點擊。

解決方案

監(jiān)聽input元素blur事件,觸發(fā)時使body滾動,即手動實現回彈。

handleBlurInOldiOS() {
  const timer = setInterval(() => {
    window.scrollTo(0, 0);
    clearInterval(timer);
  }, 1);
}

二、iOS默認鍵盤輸入中文產生亂碼

問題描述

iOS默認鍵盤在中文聯想輸入時會直接在input內填入輸入的英文,產生亂碼。

解決方案

監(jiān)聽input的compositionstartcompositionend事件,當聯想輸入時延遲文本的填入。

    handleInput(e) {
      if (this.isCompotioning) {
        setTimeout(() => {
          this.handleInputFunction(e);
        }, 100);
      } else {
        this.handleInputFunction(e);
      }
    },
    handleCompositionStart() {
      this.isCompotioning = true;
    },
    handleCompositionEnd() {
      this.isCompotioning = false;
    },

三、低版本iOS使用overflow: scroll后頁面滾動卡頓

問題描述

iOS12及以下的頁面在使用overflow: scroll后會出現滾動卡頓不連貫的問題

解決方案

在使用overflow: scroll的元素樣式中加上-webkit-overflow-scrolling: touch可解決卡頓問題,但引入后頁面偶爾會出現卡住或不能滑動的bug,可以在引入-webkit-overflow-scrolling: touch的元素的下一級子元素的height加1%或1px,從而主動觸發(fā)scrollbar,具體參考

  &__wrap {
    overflow-x: hidden;
    overflow-y: scroll;
    -webkit-overflow-scrolling: touch;
    height: 100%;
  }
  &__content:after {
    min-height: calc(100% + 1px);
  }
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容