自己處理事件並繪製文本框,iOS 因無法操作鍵盤只能藉助 input 元素。
然而:
1. 若 input 完全不顯示,則無法獲得焦點;
2. 即便是隱藏,光標依舊可見;
3. 移出文檔區域會導致事件響應十分緩慢,iOS8 Safari 無此 bug,但 UIWebView 問題依舊;
4. 保留在文檔區域內但不在可視範圍內會自動滾動頁面且無法屏蔽,setTimeout 嘗試恢復會閃爍;
5. 縮小文本框尺寸到 0 會隱藏光標,但同時無法獲知光標位置(不爲 0 但很小則可以),且對 iOS8 Safari 無效;
貌似 iOS7 與 iOS8 的 UIWebView 表現類似,但是版本號不同;iOS8 Safari 與前兩者不同但版本號與 iOS8 UIWebView 相同。
感覺只能針對特定版本來實現,但更新會影響版本號,沒辦法全部測試。不知道 iOS6 的情況。
问题解决了~
实测8.1.1和7.1.2,
特性:
問題已解決。
https://bumfo.github.io/l.html
核心代碼:
原理分析:
iOS8 的 Safari 支持在 input 外面顯示光標,因此之前修改 input 尺寸的方法無效;
iOS7 不支持在 input 外面顯示光標,某些情況下,光標位於視圖外會導致響應極其緩慢,但這時修改 input 尺寸的方法有效。
另外,若 input 尺寸(包括 border)有一項爲 0,在某些情況會出現無法獲取光標位置的問題。
綜上:
解決方案: