uniapp实现聊天窗体相关问题记录

Js 数据添加k-v键值对

//发送消息
insertMessage(){
    //获取键盘输入的信息
    var msg = this.message;
    //创建键值对
    var tmp = {msg:msg}
    //添加到数组中
    this.userMsgList.push(tmp);
}

页面读取

<view v-for="(item,index) in userMsgList" :key="index">
	{{item.msg}}
</view>
//发送消息
insertMessage:function(e){
    this.$nextTick(function () {
        //DOM 更新了

    })

    //获取键盘输入的信息
    var msg = this.message;
    //创建键值对
    var tmp = {msg:msg}
    //添加到数组中
    this.userMsgList.push(tmp);
    //清空输入框
    this.message = "";

    uni.pageScrollTo({
        scrollTop: 9999999999,//暴力滑动
        duration: 300
    });

    // uni.onWindowResize((res) => {
    //     console.log('变化后的窗口宽度=' + res.size.windowWidth)
    //     console.log('变化后的窗口高度=' + res.size.windowHeight)
    // })

},

页面窗口大小监听(键盘弹出收回事件监听)

uni.onWindowResize((res) => {
    console.log('变化后的窗口宽度=' + res.size.windowWidth)
    console.log('变化后的窗口高度=' + res.size.windowHeight)
})

消息输入框问题记录

  • 问题描述:输入框输入内容后,点击自定义的按钮触发发送消息事件,此时消息输入框失去焦点,软键盘回收。(实际想要的效果,点击自定义按钮触发发送消息事件后,文本框 的内容清空,但是不失去焦点,软键盘不回收)‘

  • 已使用的解决办法:

    • 通过uniapp的文档
    focus Boolean false 获取焦点。 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。
    confirm-type String done 设置键盘右下角按钮的文字,仅在 type="text" 时生效。
    confirm-hold Boolean false 点击键盘右下角按钮时是否保持键盘不收起 App、微信小程序、支付宝小程序、百度小程序、QQ小程序

    confirm-type 有效值

    说明 平台差异说明
    send 右下角按钮为“发送” 微信、支付宝、百度小程序、App的nvue
    search 右下角按钮为“搜索”
    next 右下角按钮为“下一个” 微信、支付宝、百度小程序、App的nvue
    go 右下角按钮为“前往”
    done 右下角按钮为“完成” 微信、支付宝、百度小程序、App的nvue

    App平台的nvue页面,如果是uni-app编译模式,直接使用此属性设置即可生效。如果是weex编译模式,需通过weex的api设置,weex相关文档参考

    App平台的vue页面不支持控制键盘右下角为“发送”,涉及聊天的建议使用nvue。

    实际效果,发送按钮为弹出的软键盘右下方的按钮,与预期的点击指定的按钮有所差距,只有点击软键盘右下的按钮,输入框才会一直聚焦,点击自定义的按钮,无效

    • js阻止默认事件

      uniapp触发不了

    • 动态修改input的focus属性

      可以实现,不过只能触发一次,并且在触发自定义按钮的事件后,输入框重新聚焦后,但在此过程中,软键盘会有一个明显的回收在弹出的一个过程

解决方法待定

posted @ 2020-08-04 10:08  STR少寒  阅读(1201)  评论(1编辑  收藏  举报