簡體   English   中英

阻止 iOS 處理焦點事件<input>

[英]Prevent iOS from handling focus event on an <input>

鑒於 iOS 通過滾動/中斷position: fixed來響應<input type='text'> ,有沒有辦法阻止 iOS/Safari 接收該事件? 我已經嘗試了無數解決此錯誤的方法,但沒有一個適合我們的用例。 我確實需要輸入才能獲得:focus偽類,並且在聚焦時調用blur並不能完全解決問題,但任何其他建議將不勝感激!

對於某些背景,我們有一個自定義鍵盤,我們可以在其中隱藏 iPad 鍵盤(在輸入上使用屬性readonly ),並且鍵盤固定在屏幕底部。 除了頁面高度大於 iPad 屏幕高度時,它工作得很好,如果有人點擊輸入,我們的自定義鍵盤會跳到頁面底部看不到的地方。 我目前有一個解決方法,我們可以切換到position: absolute ,但是我們有很多頁面,這並不理想/容易出現錯誤,必須計算自定義鍵盤的位置,因此它似乎位於 iPad 的底部每次屏幕。 注意我不需要這個解決方案在 iPhone/Android 上工作。

這是一個相當大的黑客,但它似乎有效:

body, html {
    margin: 0;
    overflow: auto;
    height: 100%;
    -webkit-overflow-scrolling: touch;
}

只需將其添加到您的 CSS 中即可。 我需要刪除邊距,不確定這是否會影響您的設計。 如果是這樣,您可能會嘗試添加填充,但我還沒有嘗試過。

這個想法是為了防止 html 元素滾動,欺騙 Safari,因為它似乎只是試圖在最外面的元素中做到這一點。

如果 html 不滾動,我需要添加回滾,所以我將它應用到正文。 這使滾動失去動力,並將其添加回來,您需要-webkit-overflow-scrolling: touch東西。

所以,為了更清楚發生了什么,代碼應該是這樣的——但我還沒有嘗試過:

html {
    margin: 0;
    overflow: hidden;
    height: 100%
}
body {
    margin: 0;
    overflow: auto;
    height: 100%;
    -webkit-overflow-scrolling: touch;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM