[英]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.