[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的方式放在了屏幕外面,那么这时候再执行动画移动到屏幕内,就不能交互了。不知道有没有什么解决办法?

5 回复

开发者你好,感谢你的反馈,我们会尽快将问题反馈给相关技术验证处理。

更多关于[HarmonyOS鸿蒙Next][JS UI] "list"组件在执行 "animation" 动画后无法与用户交互。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发者你好。当前组件动画的是一种快照形式的动画。如果需要触发子组件的点击事件,需要父组件下发点击事件才行。样例中,父组件的高度为0,一直无法获取到touch事件,所以list无响应。这个问题已经和研发确认,是处理缺陷,将在未来版本中优化。当前,可以先用dialog组件来进行规避。

https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-components-container-dialog-0000001050068157

okok, 那我先用转场来替代了,反正做着玩的不着急。

在HarmonyOS鸿蒙Next中,使用JS UI开发时,"list"组件在执行"animation"动画后无法与用户交互的问题,可能是由于动画执行期间或结束后,组件的交互状态未正确恢复。鸿蒙Next的JS UI框架中,动画可能会影响组件的触摸事件处理,导致用户无法点击或滑动"list"组件。

具体原因可能是动画执行过程中,组件的触摸事件被暂时禁用,或者动画结束后,组件的交互状态未自动恢复。可以通过检查动画配置,确保动画结束后组件的交互状态被正确重置。此外,可以尝试在动画结束时手动触发组件的交互状态恢复逻辑。

如果问题依然存在,建议检查鸿蒙Next的官方文档或更新日志,确认是否存在已知的框架问题或限制。

在HarmonyOS鸿蒙Next中,使用JS UI开发时,如果list组件在执行animation动画后无法与用户交互,可能是由于动画执行期间或结束后,组件的交互状态未正确恢复。建议检查以下几点:

  1. 动画回调:确保在动画的finish回调中恢复组件的交互状态。
  2. 交互属性:确认list组件的touchable属性在动画结束后设置为true
  3. 事件绑定:检查事件绑定是否正确,确保动画结束后事件监听器仍然有效。

通过以上步骤,可以有效解决list组件在动画后无法交互的问题。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!