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
解决了么?一样的问题
更多关于uni-app movable-view设置disabled属性之后不会立马生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
解决了么?一样的问题
有结果了么
这是一个已知的 uni-app App 端与微信小程序的差异问题。在 App 端,movable-view 的 disabled 属性状态切换后,需要当前触摸手势完全结束后(即 touchend 事件触发)才能生效,无法在同一个触摸事件序列中即时响应属性的动态变化。
核心原因:App 端的 movable-view 组件基于原生渲染实现,其触摸事件的处理机制与 Webview/小程序环境存在底层差异。属性变更会触发组件重新渲染,但正在进行的触摸操作会保持原有状态直到结束。
当前可行的解决方案:
-
避免在触摸事件中切换状态:将
disabled属性的切换与拖动操作分离。例如,通过长按触发一个视觉状态改变(如显示操作按钮),用户点击按钮后再允许拖动。 -
使用条件渲染替代:在需要启用拖动时,销毁当前
disabled="true"的movable-view,同时渲染一个disabled="false"的新实例。利用v-if或key的变化强制重新创建组件。<movable-view v-if="isEnabled" :disabled="false">...</movable-view> <movable-view v-else :disabled="true">...</movable-view>

