fix(fe): 评论页键盘避让改用 bindkeyboardheightchange 移动固定输入条

列表完全不动(adjust-position=false + 页面 overflow:hidden),只有底部 fixed
输入条按键盘高度抬 bottom,聚焦期间不碰输入框其它属性,避免原生 textarea 抖失焦。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Blizzard
2026-08-03 16:10:53 +08:00
parent 7a55ee0f2e
commit 8d0269cbce
3 changed files with 23 additions and 15 deletions
+9 -4
View File
@@ -26,6 +26,7 @@ Page({
replyTo: {},
cmFocus: false,
sendingComment: false,
kbHeight: 0,
},
onLoad(query) {
@@ -77,11 +78,15 @@ Page({
this.setData({ replyTo: {} });
},
// 关键:聚焦期间 JS 绝不 setData 碰输入条(连 cmFocus:false 都不设),
// 否则原生 textarea 会被抖失焦、键盘弹一下就自己收。cmFocus 只在失焦时复位,
// 这样下次点回复 false→true 还能重新拉起键盘。键盘避让全交给原生 adjust-position
// 键盘高度变化:微信为「自定义输入条跟随键盘」提供的事件。只改输入条的 bottom(inline),
// 评论列表完全不动。注意:聚焦期间除了这个 bottom,绝不 setData 碰输入框本身
// (不设 cmFocus:false、不改它的布局),否则原生 textarea 会被抖失焦、键盘弹一下就收
onKbChange(e) {
this.setData({ kbHeight: (e.detail && e.detail.height) || 0 });
},
onCommentBlur() {
this.setData({ cmFocus: false });
// 失焦:收起键盘时把输入条放回底部;cmFocus 复位好让下次回复能重新拉键盘
this.setData({ cmFocus: false, kbHeight: 0 });
},
// 配图:评论只允许 1 张