中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

小程序處理鍵盤覆蓋輸入框的方法

發布時間:2020-12-21 11:25:32 來源:億速云 閱讀:340 作者:小新 欄目:移動開發

小編給大家分享一下小程序處理鍵盤覆蓋輸入框的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

在移動端里, 當輸入框處于頁面比較下方的時候回發生鍵盤覆蓋輸入框的情況, 在小程序中也發生了類似情況, 但小程序提供了一些api, 但不能達到需求. 這里來簡單說一下解決思路.

小程序的默認行為

在發生了鍵盤覆蓋輸入框的時候, 在不操作任何api的情況下, 小程序會把屏幕向上推, 推到輸入框正好在鍵盤上方的位置.

也就是如果不經過處理, 小程序的鍵盤是不會覆蓋輸入框的. 但是在我的需求里這樣還不夠, 因為頁面上部分是需要持續展示的內容, 不希望把頁面向上推.

所以下面要通過小程序的api來解決這些問題.

cursor-spacing

在比較正常的UI設計中, 輸入框外面實際都會有一層wrapper, 而很明顯小程序是默認行為是不知道的, 所以結果是會把這層wrapper的下半部分(輸入框以下的)切掉. 那么就非常難看了.

引入這個apicursor-spacing, 設多少, input下面就留多少. 這個數字應當是'輸入框下邊緣到wrapper結束的距離".

小程序的坑在于: 文檔上的單位是錯的, 本來就需要試才知道這個屬性的含義是什么, 所以單位錯導致無效果就讓一(大)部分人放棄了. 正確的單位是帶有單位的字符串. 例如10px或者100rpx.

adjust-position

剛才說到我的需求, 我希望頁面不向上推, 而直接把輸入框頂上來.

于是嘗試了這個api. 默認是true, 把他設為false. 效果變成了: 點了輸入框, 鍵盤完美覆蓋輸入框.

于是在加上cursor-spacing, 發現這兩個api是不能同時生效的.

所以最后結論是: 單純用提供的api無法實現需求了. 所以只能監聽事件自己做.

解決方案

手動操作輸入框思路:

  1. adjust-position設為false.

  2. 在輸入框的wrapper的bottom樣式綁到本地數據, 并設為absolute定位.

  3. 在focus事件里改變輸入框的位置.

  4. 在blur事件里復原輸入框的位置.

按照這個思路操作, 遇到了幾個問題:

如何確定輸入框的位置

發現在bindfocus事件中可以獲得鍵盤的高度, 經過嘗試, 鍵盤的高度是以px為單位的. 所以直接把bottom的值設為px高度就行了.

如果輸入框wrapper的相對定位不是頁面底部, 情況就比較復雜, 若是用rpx為單位, 需要獲得屏幕寬高來計算px數, 在不麻煩的情況下可以調整布局使wrapper相對于頁面底部定位.

在改變style后輸入框立即失去焦點

發生了這個情況后表現為: 點了輸入框, 輸入框的wrapper閃一下又回原處. (因為失去焦點)

經過多次試驗, 需要做的是在綁定一個本地變量到focus屬性.

然后用wx:if根據是否focus隱藏輸入框, 放一個假的輸入框, 點擊以后使改變focus屬性來喚起鍵盤.

看完了這篇文章,相信你對小程序處理鍵盤覆蓋輸入框的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡水市| 平舆县| 湖南省| 乌海市| 临汾市| 通海县| 永胜县| 荔浦县| 兴安盟| 仁寿县| 青州市| 安吉县| 从化市| 噶尔县| 秦皇岛市| 永春县| 晴隆县| 密山市| 资阳市| 峨山| 秦皇岛市| 陵水| 浑源县| 苏尼特右旗| 绥阳县| 新宁县| 瑞金市| 江陵县| 柘城县| 四子王旗| 玛纳斯县| 博湖县| 株洲县| 寿阳县| 石棉县| 依安县| 陆良县| 崇文区| 泰兴市| 高雄市| 杭锦旗|