diff --git a/im-uniapp/pages/chat/chat-box.vue b/im-uniapp/pages/chat/chat-box.vue index 296a497..ff3b7e7 100644 --- a/im-uniapp/pages/chat/chat-box.vue +++ b/im-uniapp/pages/chat/chat-box.vue @@ -642,13 +642,21 @@ export default { }); }, onClickToBottom() { - this.scrollToBottom(); - // 有些设备滚到底部时会莫名触发滚动到顶部的事件 - // 所以这里延迟100s保证能准确设置底部标志 + /** + * 有些ios设备在点击回到底部后页面会卡住,原因不详 + * 解决方式: 延迟300ms再滚动 + */ setTimeout(() => { - this.isInBottom = true; - this.newMessageSize = 0; - }, 100) + this.scrollToBottom(); + /** + * 有些设备滚到底部时会莫名触发滚动到顶部的事件 + * 解决方式: 延迟100ms保证能准确设置底部标志 + */ + setTimeout(() => { + this.isInBottom = true; + this.newMessageSize = 0; + }, 100) + }, 300) }, onScroll(e) { // 记录当前滚动条高度 @@ -656,16 +664,14 @@ export default { }, onScrollToTop() { if (this.showMinIdx > 0) { - // #ifndef H5 - // 防止滚动条定格在顶部,不能一直往上滚,app和小程序采用scroll-into-view定位 - this.scrollToMsgIdx(this.showMinIdx); - // #endif - // #ifdef H5 - // 防止滚动条定格在顶部,不能一直往上滚,h5采用scroll-top定位 + // 防止滚动条定格在顶部,不能一直往上滚 if (uni.getSystemInfoSync().platform == 'ios') { + // ios采用scroll-top定位,否则可能会出现白屏 this.holdingScrollBar(this.scrollViewHeight); + } else { + // 安卓采用scroll-into-view定位 + this.scrollToMsgIdx(this.showMinIdx); } - // #endif // 多展示20条信息 this.showMinIdx = this.showMinIdx > 20 ? this.showMinIdx - 20 : 0; }