「点击地址,出现后,选中,又会弹出一次地址选择框,就是那个联想框, 这个在添加日程时就有,这次又出现了。这个并没有解决。」
lastApplied
primed
trim()
值比对这条路本身不可靠。 ArkUI 在 TextInput 内容被程序改写时, onChange 的触发次数和时机不确定(重渲染一次、光标定位一次、输入法同步一次)。 只要有一次值与 lastApplied 不一致,就会搜一次,框就重弹。
// pick() 里 this.suppressUntil = Date.now() + 600; // onType() 最开头 if (Date.now() < this.suppressUntil) { return; }
600ms 内任何 onChange 都直接返回,不管触发几次、值有无差异。
⚠️ 不担心误伤真实输入:人不可能在 600ms 内打完第二个字 (正常打字间隔 150~300ms,且刚点完候选视线还在候选框上)。 即便真打了,防抖 260ms 后仍会搜一次,只是"慢半拍"。
⚠️ 与值比对并存(时间窗兜住"刚选中"瞬间,值比对兜住"稍后回写")。
「有时候弹出的框会在输入框下面。我们之前定的是在输入框上面弹出来, 不然如果在下面弹出来,会被输入键盘挡住。」
bindPopup 的 placement: Placement.Top 只是偏好, 上方空间不足时系统会自动翻到下方。没有"强制在上"的开关。
bindPopup
placement: Placement.Top
让它在上方放得下:候选列表 maxHeight 从 220 收到 180, 更容易塞进上方空间。
maxHeight
「"记一场电影"这种输入,输入框怎么上下划不动?」
Scroll() { ... } .flexShrink(1) // ← 只是"允许被压缩" .width('100%')
在 Column 里,Scroll 需要 layoutWeight(1) 才能拿到"剩余高度"。 只写 flexShrink(1) 时,Scroll 高度 = 内容高度(超出父级后被裁切) ⇒ 自身没有可滚动空间 ⇒ 划不动。
Column
Scroll
layoutWeight(1)
flexShrink(1)
.layoutWeight(1) .edgeEffect(EdgeEffect.Spring)
FbAddrInput.ets
suppressUntil
FbMovieNewSheet.ets
Placement.Top 只是偏好这点无法从端上强制。 若仍频繁翻到下方,需改成内联在 Scroll 流内或自定义全屏浮层。
Placement.Top
#51 里有「端上地址拿详细地址」,但那是数据结构问题(onPick 回调);本单是交互问题(选中后重弹、弹窗位置、滚动失效)。两者在同一个组件里但根因完全不同。
No dependencies set.
The note is not visible to the blocked user.
地址联想框重复弹出、位置跑到下方;电影弹层无法滚动
一、地址联想框选中后又弹一次
前三次都没修好(都靠"比字符串")
lastApplied原串比对primed只防首次挂载trim()比对真因
值比对这条路本身不可靠。 ArkUI 在 TextInput 内容被程序改写时,
onChange 的触发次数和时机不确定(重渲染一次、光标定位一次、输入法同步一次)。
只要有一次值与
lastApplied不一致,就会搜一次,框就重弹。修法:时间窗抑制
600ms 内任何 onChange 都直接返回,不管触发几次、值有无差异。
⚠️ 不担心误伤真实输入:人不可能在 600ms 内打完第二个字
(正常打字间隔 150~300ms,且刚点完候选视线还在候选框上)。
即便真打了,防抖 260ms 后仍会搜一次,只是"慢半拍"。
⚠️ 与值比对并存(时间窗兜住"刚选中"瞬间,值比对兜住"稍后回写")。
二、联想框位置跑到输入框下方
真因
bindPopup的placement: Placement.Top只是偏好,上方空间不足时系统会自动翻到下方。没有"强制在上"的开关。
修法
让它在上方放得下:候选列表
maxHeight从 220 收到 180,更容易塞进上方空间。
三、电影弹层划不动
真因
在
Column里,Scroll需要layoutWeight(1)才能拿到"剩余高度"。只写
flexShrink(1)时,Scroll 高度 = 内容高度(超出父级后被裁切)⇒ 自身没有可滚动空间 ⇒ 划不动。
修法
改动清单
FbAddrInput.etssuppressUntil;候选限高 180FbMovieNewSheet.etslayoutWeight(1)验收
遗留
Placement.Top只是偏好这点无法从端上强制。若仍频繁翻到下方,需改成内联在 Scroll 流内或自定义全屏浮层。
为什么单独建单
#51 里有「端上地址拿详细地址」,但那是数据结构问题(onPick 回调);本单是交互问题(选中后重弹、弹窗位置、滚动失效)。两者在同一个组件里但根因完全不同。