uni-app movable-view设置disabled属性之后不会立马生效

uni-app movable-view设置disabled属性之后不会立马生效

操作步骤:

  • movable-view初始设置disabled属性为true让他不能被拖动,长按后设置为false并且拖动,结果无法拖动,松开手指后再次拖动才能拖动

预期结果:

  • 长按事件中设置movable-view disabled属性为false并且拖动立马生效,跟微信小程序一样

实际结果:

  • 设置movable-view disabled属性为false后无法立马生效,松开手指后再次拖动才有效果

bug描述:

  • movable-view初始设置disabled属性为true让他不能被拖动,长按后设置为false并且拖动,结果无法拖动,松开手指后再次拖动才能拖动
  • 微信小程序正常,运行到APP上就不行
信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC操作系统版本 Windows 7
HBuilderX类型 正式
HBuilderX版本 3.2.9
手机系统 Android
手机系统版本 Android 10
手机厂商 华为
手机机型 华为荣耀9X
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

图像 图像 图像 图像


更多关于uni-app movable-view设置disabled属性之后不会立马生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

解决了么?一样的问题

更多关于uni-app movable-view设置disabled属性之后不会立马生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


解决了么?一样的问题

有结果了么

这是一个已知的 uni-app App 端与微信小程序的差异问题。在 App 端,movable-viewdisabled 属性状态切换后,需要当前触摸手势完全结束后(即 touchend 事件触发)才能生效,无法在同一个触摸事件序列中即时响应属性的动态变化。

核心原因:App 端的 movable-view 组件基于原生渲染实现,其触摸事件的处理机制与 Webview/小程序环境存在底层差异。属性变更会触发组件重新渲染,但正在进行的触摸操作会保持原有状态直到结束。

当前可行的解决方案

  1. 避免在触摸事件中切换状态:将 disabled 属性的切换与拖动操作分离。例如,通过长按触发一个视觉状态改变(如显示操作按钮),用户点击按钮后再允许拖动。

  2. 使用条件渲染替代:在需要启用拖动时,销毁当前 disabled="true"movable-view,同时渲染一个 disabled="false" 的新实例。利用 v-ifkey 的变化强制重新创建组件。

    <movable-view v-if="isEnabled" :disabled="false">...</movable-view>
    <movable-view v-else :disabled="true">...</movable-view>
回到顶部