[HarmonyOS鸿蒙Next][JS UI] "list"组件在执行 "animation" 动画后无法与用户交互。
[HarmonyOS鸿蒙Next][JS UI] "list"组件在执行 “animation” 动画后无法与用户交互。 首先用list组件做了一个星球选择列表,可以正常交互。
然后我想先把list隐藏到屏幕外面,然后通过点击按钮触发animation,让组件向下平移出现。虽然动画是正常执行了,但是执行之后就不能跟用户交互了。
有没有高人能指点一二,让这个list既可以通过点击按钮弹出,又可以继续跟用户交互?
onShow(){
var optionsPromptList = {
duration: 500,
easing: 'friction',
delay: 0,
fill: 'none',
iterations: 1,
};
var framesPromptList = [
{transform: {translateY: '0'}, opacity: 0.1, offset: 0.0},
{transform: {translateY: '720'}, opacity: 1.0, offset: 1.0}
];
this.animationPromptList = this.$element('planetsSelect').animate(framesPromptList, optionsPromptList);
this.animationPromptButt = this.$element('planetsSelectButt').animate(framesPromptList, optionsPromptList);
},
popSelectList(){
this.animationPromptList.play();
this.animationPromptButt.play();
prompt.showToast({
message: "button clicked."
});
},
测试结果与发现
我后来又换了一种动画方式,就是在css里面写@keyframs的方式。然后发现,如果这个list一开始有一部分出现在屏幕内,那么执行完动画之后还能交互。但是如果list一开始就通过给定top的方式放在了屏幕外面,那么这时候再执行动画移动到屏幕内,就不能交互了。不知道有没有什么解决办法?
开发者你好。当前组件动画的是一种快照形式的动画。如果需要触发子组件的点击事件,需要父组件下发点击事件才行。样例中,父组件的高度为0,一直无法获取到touch事件,所以list无响应。这个问题已经和研发确认,是处理缺陷,将在未来版本中优化。当前,可以先用dialog组件来进行规避。
okok, 那我先用转场来替代了,反正做着玩的不着急。
在HarmonyOS鸿蒙Next中,使用JS UI开发时,"list"组件在执行"animation"动画后无法与用户交互的问题,可能是由于动画执行期间或结束后,组件的交互状态未正确恢复。鸿蒙Next的JS UI框架中,动画可能会影响组件的触摸事件处理,导致用户无法点击或滑动"list"组件。
具体原因可能是动画执行过程中,组件的触摸事件被暂时禁用,或者动画结束后,组件的交互状态未自动恢复。可以通过检查动画配置,确保动画结束后组件的交互状态被正确重置。此外,可以尝试在动画结束时手动触发组件的交互状态恢复逻辑。
如果问题依然存在,建议检查鸿蒙Next的官方文档或更新日志,确认是否存在已知的框架问题或限制。