一、现象

     在真机中,当光标作用信息发送框唤起软键盘时,键盘会把输入框盖住一大半。如图:

 

   唤起前:        唤起后:   

 

二、解决

  1、输入框设置adjust-position=“false”属性(adjust-position为表单组件键盘弹起时,是否自动上推页面)

  2、当输入框获得焦点时,获取软键盘的高度

  3、给输入框设置与底部的距离为软键盘的高度

  4、当输入框失去焦点时,重新设置输入框与底部的默认值

  5、完成

 

  输入框html代码如:

  

<view class="chat_footer" :style="{ bottom: keyboardHeight }">
    <textarea
        v-model="formData.message"
        :fixed="true"
        adjust-position="false"
        @focus="onFocus"
        @blur="onBlur"
        placeholder="请输入"/>
    <button type="primary" size="mini">发送</button>
</view>        

  

 

   作用输入框的脚本方法如:

methods: {
    // 当输入框获得焦点时
    onFocus (e) {
        // 如果存在软键盘的高度
        e.target.height && (this.keyboardHeight = e.target.height + 'px')
    },
    // 当输入框失去光标时
    onBlur () {
        this.keyboardHeight = 0
    }
}

 

  基础样式如:

.chat_footer {
    position: fixed;
    bottom: 0;
}

 

 

  效果为:

  

 

三、总结

这操作方法在单个输入框进行发送信息时会常用到。

 

TIPS:
延伸问题点:当输入框获得焦点或是发送了信息后。因信息是追回到页面底部的,从而需要页面得往上滚动到底部,这样的交互就会更舒服一点。如以下代码:

<scroll-view class="chat_body" :scroll-top="scrollTop" scroll-y="true">
    // 这里是所发表的信息列表
</scroll-view>
data () {
    return {
        scrollTop: 9999
    }
},

methods: {
    // 当输入框获得焦点时
    onFocus (e) {
        this.$set(this, 'scrollTop', this.scrollTop + 1)
    }
}
tips: onFocus 和主文的输入框同一方法

  

 

  记录时间的美好~

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2023-05-05 17:28  小老虎网络  阅读(1158)  评论(0编辑  收藏  举报