小程序
小游戏
企业微信
微信支付
扫描小程序码分享
做一个IM系统,上面是聊天区域展示,下面是输入框。
1、点击输入框,调起键盘,然后开始输入
2、输入的过程中接收到了一条消息,渲染展现
3、正在输入的键盘被强行收起。
现在是所有手机都是这样无论什么版本。只要接收到消息就会被打断input输入,收起键盘。
有解法吗?
现在input已经有key了。
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我试了一下我做的IM,并没有这个问题
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
我也遇到楼主的情况了,可以详细说说您那边怎么实现的吗?
我的wxml这样的
<
view
class
=
"page-body"
>
bindtap
"closeEmoji"
"page-section tc"
live-player
"{{fullScreenFlag?'horizontal':'vertical'}}"
id
"player"
orientation
"{{orientation}}"
src
"{{url}}"
bindstatechange
"statechange"
cover-view
"errorText"
{{error}}
</
scroll-top
"{{scrolltop}}"
wx:if
"{{messageShow&&!fullScreenFlag}}"
"msgList"
"messageList"
"messageContent"
"messageItem"
wx:for
"{{msgList}}"
"messageText"
"{{item.msgType=='TEXT'||item.msgType=='EMOJI'}}"
"messageTextItem messagebody"
>{{item.body}}</
"{{!fullScreenFlag}}"
"operate"
input
wx:key
"send"
"{{messageShow}}"
bindconfirm
"sendText"
confirm-type
'send'
value
"{{text}}"
placeholder
"跟主播聊点什么?"
"textInput"
/>
image
"fullScreen"
"./img/max.png"
'full_img'
></
js如下:
renderMsg() {
let _this =
this
;
let msgList = JSON.parse(JSON.stringify(_this.data.msgList));
let saveList = JSON.parse(JSON.stringify(_this.data.saveList));
if
(saveList.length==0){
return
}
else
(saveList.length<5){
msgList.concat(saveList);
saveList = []
{
let addList = saveList.splice(0,5);
msgList.concat(addList);
(msgList.length > 100) {
msgList.splice(msgList.length-100, msgList.length);
_this.setData({
msgList: msgList
},()=>{
var
query = wx.createSelectorQuery();
query.select(
'.messageContent'
).boundingClientRect(
function
(rect) {
scrolltop: rect.height>160?rect.height-160:0
})
}).exec();
});
},
msgList是从websocket里面获取消息后把最新的push进去的。
我没用live-player,cover-view
这块现在很苦恼。不知道怎么搞。
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
问题解决了吗?怎么处理的?
你这个代码怎么重现?
找到原因了 是因为用了动画
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我试了一下我做的IM,并没有这个问题
我也遇到楼主的情况了,可以详细说说您那边怎么实现的吗?
我的wxml这样的
<
view
class
=
"page-body"
>
<
view
bindtap
=
"closeEmoji"
class
=
"page-section tc"
>
<
live-player
class
=
"{{fullScreenFlag?'horizontal':'vertical'}}"
id
=
"player"
orientation
=
"{{orientation}}"
src
=
"{{url}}"
bindstatechange
=
"statechange"
>
<
cover-view
class
=
"errorText"
>
{{error}}
</
cover-view
>
<
cover-view
scroll-top
=
"{{scrolltop}}"
wx:if
=
"{{messageShow&&!fullScreenFlag}}"
id
=
"msgList"
class
=
"messageList"
>
<
cover-view
class
=
"messageContent"
>
<
cover-view
class
=
"messageItem"
wx:for
=
"{{msgList}}"
>
<
cover-view
class
=
"messageText"
wx:if
=
"{{item.msgType=='TEXT'||item.msgType=='EMOJI'}}"
>
<
cover-view
class
=
"messageTextItem messagebody"
>{{item.body}}</
cover-view
>
</
cover-view
>
</
cover-view
>
</
cover-view
>
</
cover-view
>
</
live-player
>
<
view
wx:if
=
"{{!fullScreenFlag}}"
class
=
"operate"
>
<
input
wx:key
=
"send"
wx:if
=
"{{messageShow}}"
bindconfirm
=
"sendText"
confirm-type
=
'send'
value
=
"{{text}}"
placeholder
=
"跟主播聊点什么?"
class
=
"textInput"
/>
<
image
wx:if
=
"{{!fullScreenFlag}}"
bindtap
=
"fullScreen"
src
=
"./img/max.png"
class
=
'full_img'
></
image
>
</
view
>
</
view
>
</
view
>
js如下:
renderMsg() {
let _this =
this
;
let msgList = JSON.parse(JSON.stringify(_this.data.msgList));
let saveList = JSON.parse(JSON.stringify(_this.data.saveList));
if
(saveList.length==0){
return
;
}
else
if
(saveList.length<5){
msgList.concat(saveList);
saveList = []
}
else
{
let addList = saveList.splice(0,5);
msgList.concat(addList);
}
if
(msgList.length > 100) {
msgList.splice(msgList.length-100, msgList.length);
}
_this.setData({
msgList: msgList
},()=>{
var
query = wx.createSelectorQuery();
query.select(
'.messageContent'
).boundingClientRect(
function
(rect) {
_this.setData({
scrolltop: rect.height>160?rect.height-160:0
})
}).exec();
});
},
msgList是从websocket里面获取消息后把最新的push进去的。
我没用live-player,cover-view
这块现在很苦恼。不知道怎么搞。
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
问题解决了吗?怎么处理的?
你这个代码怎么重现?
找到原因了 是因为用了动画