ios上input的focus()、autofocus無效處理方法(20180918)

出現(xiàn)focus無效原因:

ios的UIWebView 默認(rèn)的KeyboardDisplayRequiresUserAction為false,設(shè)置為true就行,WKWebView 不支持這個屬性,如果要從原生入手解決,請參考https://stackoverflow.com/questions/32407185/wkwebview-cant-open-keyboard-for-input-field

解決思路:

從無效原因可以看出,是鍵盤需要用戶觸發(fā)才能彈出,這導(dǎo)致了autofocus或者element.focus()無效,所以,在鍵盤彈出的情況下再去focus,或者跳轉(zhuǎn)到帶有autofocus的頁面也就可以正常focus了

解決方法:

通常的場景是,我們點擊頁面某個元素 => 邏輯交互 => 希望focus元素、或者跳轉(zhuǎn)到有aotufocus的頁面。再這里有個大前提,就是要有點擊頁面行為。

  • 第一步:在點擊頁面時候,給一個占位的input進行focus,調(diào)起鍵盤;

  • 第二步:邏輯交互、異步操作、settimeout延時處理等,在處理完成再focus到目標(biāo)input,或者跳轉(zhuǎn)到autofocus的頁面,就可以正常focus了。

劃重點

只要是點擊事件的回調(diào)就具備focus到input的能力,所以無論是點擊生成input再focus到這個input、還是跳轉(zhuǎn)到autofocus的頁面,先利用點擊focus到一個占位input調(diào)起鍵盤,在鍵盤存在的情況下調(diào)用element.focus()或者跳轉(zhuǎn)到有autofocus的頁面就都可以正常focus了。

占位input:
.clip{
  position: absolute;
  clip: rect(0 0 0 0);
}

<input ref="tempFocus" class="clip">

<div @click="gotoCommentClick">快來留言吧!</div>

gotoCommentClick() {
  this.afterLogin().then(_ => {
    this.$refs.tempFocus.focus();
    this.$router.push(this.$route.path + '/comment');
  })
},
comment.vue
mounted() {
    this.$refs.editor.focus();
  }

UC瀏覽器上注意事項:

uc瀏覽器,如果吊起鍵盤focus的input和延時再去focus的input不是同一個input,則第二個input無法正常focus,會出現(xiàn)鍵盤彈起又收起。處理方式是第二focus的input由第一個input復(fù)制插入到頁面就可以正常了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,232評論 3 119
  • 最近又調(diào)整了學(xué)習(xí)英語的計劃,把快堅持了一年的口語打卡也停了,學(xué)習(xí)內(nèi)容都換上了賴世雄老師的《美語從頭學(xué)》系列。 美語...
    穆建園閱讀 549評論 3 1
  • 我家閨女有鼻炎,兒研所也看了,醫(yī)生也沒有辦法,只是說平時隔個十天半月的涂涂紅霉素軟膏,多清洗,沒什么好...
    春暖花開冬天已過閱讀 198評論 0 0
  • 從筆圖可以把人主要分為四種類型: 膽汁質(zhì)(o型血):性格表現(xiàn):強勢,精神力強,容易自我。適合抓宏觀的崗位比較厲害,...
    垚堯進化史閱讀 298評論 0 0

友情鏈接更多精彩內(nèi)容