HarmonyOS 鸿蒙Next 控件拖拽问题

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 控件拖拽问题

我有一个场景,是两个卡片cell交换位置,现在用真机试了,发现拖的同时到桌面,然后放开,偶尔崩溃,并且视图会被拖到桌面上,一会消失。麻烦看一下

List({ scroller: this.scrollView }) {
ForEach(this.listDataArray, (item: Data, index) => {
ListItem() {
this.itemCell(item, index)
}
.visibility(this.hiddenIndex == index ? Visibility.Hidden : Visibility.Visible)
.onDragStart(() => { // TODO:知识点:在ListItem层,通过onDragStart实现拖拽开始时的回调行为
this.hiddenIndex = index; // 拖拽时,设置子组件原位置图标不可见
})
.onTouch((event: TouchEvent) => { // 拖拽释放时,记录目标位置子组件index值
if (event.type === TouchType.Down) {
this.dragIndex = index;
}
})
})
}.listDirection(Axis.Vertical)
.layoutWeight(1)
.onDrop((event: DragEvent, extraParams: string) => { // TODO:知识点:在List层,通过onDrop实现拖拽结束后的回调行为
let jsonString: JsonObjType = JSON.parse(extraParams) as JsonObjType; // 通过参数extraParams获取原位置子组件index值

this.changeIndex(this.dragIndex, jsonString.insertIndex); // 互换子组件index值
this.hiddenIndex = -1; // 完成互换后,设置子组件原位置图标不可见

1 回复

针对HarmonyOS 鸿蒙Next控件拖拽问题,以下是一些可能的解决方案:

  1. 确认拖拽属性设置

    • 确保要拖拽的控件已设置draggable属性为true
    • 检查目标控件是否设置了allowDrop属性,并允许对应类型的数据落入。
  2. 拖拽事件实现

    • 对于需要自定义拖拽响应的控件,确保已正确实现onDragStartonDragEnteronDragMoveonDragLeaveonDroponDragEnd等事件。
    • 在这些事件回调中,确保已正确处理拖拽数据的传输和接收。
  3. 检查API版本兼容性

    • 拖拽功能从API Version 7开始支持,确保你的开发环境、鸿蒙系统版本以及目标设备的API版本均支持拖拽功能。
  4. 调试与排查

    • 使用DevEco Studio的调试工具,检查拖拽过程中是否有异常信息输出。
    • 尝试在不同设备、不同系统版本上测试拖拽功能,以排除特定环境的问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部