在taro开发微信小程序的时候,对接了一个直播平台的sdk,其中里面是有一个聊天模块,在直播过程中,可以实时获取房间内不同用户的聊天信息。
需求一
当我们回调实时接收到这个消息的时候,就将页面滚动至底部,保持看到的是最新的消息。
思路:聊天列表是一个数组,收到新的消息数组长度增加,页面dom高度改变,滚动到对应高度。
代码
- //聊天滚动底部方法
- scrollBottom() {
- var that = this
- var query = Taro.createSelectorQuery().select('#chat-list').boundingClientRect()
- query.exec(function (res) {
- that.setState({
- scrollTopValue: res[0].height
- })
- });
- }
tip
#chat-list为id为chat-list的元素。
scrollTopValue为页面需要滚动的高度,赋值给ScrollView
组件即可。
需求二
发送消息的时候,聚焦输入框,键盘顶起,页面内容保持原样,输入框在键盘上方。
效果图:
思路:聚焦输入框,键盘弹起,获取键盘高度,将输入框使用position: fixed;
固定定位为键盘的高度。
代码
- <View className="footerButton" style="{`bottom:" ${bottom}`}>
- <AtInput
- adjustPosition={false} //键盘弹起时,是否自动上推页面
- onBlur={this.isOnBlur.bind(this)} //失去焦点触发
- onKeyboardHeightChange={this.isFourceHeight.bind(this)} //键盘高度发生变化的时候触发此事件
- />
- </View>
- //失焦
- isOnBlur() {
- this.setState({ bottom: 0, })
- }
- //获取键盘高度
- isFourceHeight(e) {
- this.setState({ bottom: e.detail.height + 'px',
- })
- }
完。
微信小程序
互联网开发,终身学习者,欢迎您的关注!
2023年6月5日 上午10:08
但是这个事件只支持小程序嘞,h5好像不行
2023年7月6日 上午11:47
@唐北乐 当时的开发场景是微信小程序,h5的没有试,应该需要一些兼容处理
2020年11月11日 下午6:52
感谢博主分享