解決uni-app微信小程序input輸入框在底部時,鍵盤彈起頁面整體上移問題
問題描述:
最近的做了個客服聊天的功能,遇到一個問題如下:
在手機上點擊聊天頁底部的input框后,鍵盤彈起同時頁面會整體上移,標題欄被頂上去了。如下圖:

問題分析:
input 獲取焦點時會自動調起手機鍵盤,設置 :adjust-position="true",會導致鍵盤彈起時頁面整體上移
解決思路:
- 設置使鍵盤彈起使頁面不上移
- 設置輸入框所在盒子為絕對定位
- 鍵盤彈起時獲取鍵盤高度
- 設置輸入框所在盒子的bottom的鍵盤高度
注意:我這里是將消息輸入部分封裝成了組件,引入到它所在的
view里的,所以需要將鍵盤高度子傳父傳值給它所在的盒子,如果是在同一個文件中的話直接將獲取到的鍵盤高度賦值給bottom就可以。
1. input
<input class="TUI-message-input-area" :adjust-position="false" // 修改為 false,使鍵盤彈起頁面不上移 cursor-spacing="20" v-model="inputText" @input="onInputValueChange" maxlength="140" type="text" placeholder-class="input-placeholder" placeholder="說點什么呢~" @focus="inputBindFocus" // 添加獲取焦點鍵盤彈起事件 @blur="inputBindBlur" // 添加失去焦點鍵盤隱藏事件 />
重點在這里?。?!我踩坑被折磨很久的一個地方!?。∫欢ㄒ?px?。?!
methods: {
inputBindFocus(e) {
// 獲取手機鍵盤的高度,賦值給input 所在盒子的 bottom 值
// 注意!!! 這里的 px 至關重要!!! 我搜到的很多解決方案都沒有說這里要添加 px
this.$emit('changeBottomVal', e.detail.height + 'px')
},
inputBindBlur() {
// input 失去焦點,鍵盤隱藏,設置 input 所在盒子的 bottom 值為0
this.$emit('changeBottomVal', 0)
}
}
2. input 所在的盒子:
<view v-if="showChat" class="message-input" :style="{ bottom: bottomVal }">
<TUI-message-input id="message-input" ref="messageInput" :conversation="conversation" @sendMessage="sendMessage" @changeBottomVal="changeBottomVal"/>
</view>
data() {
return {
bottomVal: ''
}
}
methods: {
changeBottomVal(val) {
this.bottomVal = val
}
}
.message-input {
flex-shrink: 0;
width: 100%;
position: absolute; // input 所在盒子設置絕對定位
left: 0;
bottom: 0; // 默認 0
z-index: 199;
}
總結:
由于獲取的系統(tǒng)的尺寸單位都是 px ,給 bottom 設置的值單位也一定要是 px ! 不能因為是手機端就用 rpx,2倍的 rpx 也不可以,因為并不是每個手機分辨率都是我們設計圖上375的2倍,一定要用 px ?。。。?/p>
到此這篇關于解決uni-app微信小程序input輸入框在底部時,鍵盤彈起頁面整體上移問題的文章就介紹到這了,更多相關uni-app微信小程序input輸入框內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JS實現(xiàn)深度優(yōu)先搜索求解兩點間最短路徑
這篇文章主要為大家詳細介紹了JS實現(xiàn)深度優(yōu)先搜索求解兩點間最短路徑,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
JS中的常見數(shù)組遍歷案例詳解(forEach,?map,?filter,?sort,?reduce,?ever
這篇文章主要介紹了JS中的常見數(shù)組遍歷方法詳解(forEach,?map,?filter,?sort,?reduce,?every),本篇講用實際案例詳解他們的語法和用法,需要的朋友可以參考下2023-05-05
JavaScript實現(xiàn)的select點菜功能示例
這篇文章主要介紹了JavaScript實現(xiàn)的select點菜功能,涉及javascript動態(tài)操作頁面元素及元素遍歷相關技巧,需要的朋友可以參考下2017-01-01
ie與firefox下的event使用說明與詳細區(qū)別
event是ie自帶的一個對象,而ff中不存在該對象,只能通過傳遞參數(shù)(并且惟一)的方式來實現(xiàn)event.2009-10-10

