前端开发聊天室(踩坑避坑)

简介:此文章为 简一 独立开发聊天室后遇到的一些问题(包括但不限于样式,逻辑等)记录,不止为了给后续想要开发聊天室的朋友们一些建议,还是为了自己能有一个印象,避免以后再次进行犯错


问题记录

样式问题:

1.输入法软键盘导致底部input框被覆盖

2.软键盘导致内容区错位并影响聊天记录查看

逻辑问题:

1.滚动无法关闭软键盘

2.在打开软键盘的时候切换表情或更多功能时出现动态效果视觉不好


问题解决方案

输入法软键盘导致底部input框被覆盖

我们可以在页面中进行软键盘事件监听进行处理

1.可以在onLoad中创建监听

 onLoad() {
	// 注册键盘显示事件监听器
	uni.onKeyboardHeightChange(this.onKeyboardShow);
},

2.在method中创建事件获取软键盘高度

onKeyboardShow(e) {
	// 处理键盘显示事件的逻辑
	console.log(this.statusBarHeight, e.height, '打印软键盘高度');
	const keyboardHeight = e.height;
	this.keyboardHeight = keyboardHeight
},

3.在 对应底部框位置 设置高度(此步骤只提供一种方法)

直接将底部框通过元素进行移位(内容区则是flex布局)

<view :style="`height: ${keyboardHeight}px;`">
</view>

我看到很多人使用固定定位(position: fixed;)进行操作 bottom(同理并不影响,使用哪种办法都可以)

软键盘导致内容区错位并影响聊天记录查看

此问题出现是因为内容区并没有进行自适应的操作

这里提供两种解决方法(flex布局,fixed定位

1.通过底部框不同的高度进行内容区的高度设置(fixed定位处理方法

定位方法,这里不提供样式代码,可以根据自己需要的动态效果在行内进行样式处理,相信可以达到不错的效果

2.通过flex布局(flex:1进行自适应操作)注意如果此时你开发的是app,则要在父级元素上进行高度设置,可通过 100vh - 对应高度 完成设置。

height: 100vh;
display: flex;
flex-direction: column;
//因我的头部导航使用的是uni自带的,所以直接使用100vh即可,
//但如果你们聊天的头部导航为自定义,则需要减去头部导航的内容高度

滚动无法关闭软键盘

正常来讲,在滑动页面时,我们需要将软键盘或其他表情底部栏关闭(不需要此需求则可以跳过)

我们可以通过 uni.hideKeyboard();

在对应时候进行软键盘隐藏,还可以进行其他操作,将表情或更多底部栏进行变量改变隐藏

onKeyboardHide(e) {
    // 处理键盘隐藏事件的逻辑
	if (this.keyboardHeight != 0) {
		uni.hideKeyboard(); //隐藏软键盘
	}
},

在打开软键盘的时候切换表情或更多功能时出现动态效果视觉不好

此问题,出现在进行切换底部框时,没有做到谁先出现谁先消失的效果,这里可以直接在函数种进行判断,在出现切换时,仅更新底部框的高度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值