posts - 108,  comments - 44,  views - 45万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

一、现象

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

 

   唤起前:        唤起后:   

 

二、解决

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

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

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

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

  5、完成

 

  输入框html代码如:

  

1
2
3
4
5
6
7
8
9
10
<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   小老虎网络  阅读(1241)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示