HarmonyOS 鸿蒙Next 控件拖拽问题
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; // 完成互换后,设置子组件原位置图标不可见
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控件拖拽问题,以下是一些可能的解决方案:
-
确认拖拽属性设置:
- 确保要拖拽的控件已设置
draggable
属性为true
。 - 检查目标控件是否设置了
allowDrop
属性,并允许对应类型的数据落入。
- 确保要拖拽的控件已设置
-
拖拽事件实现:
- 对于需要自定义拖拽响应的控件,确保已正确实现
onDragStart
、onDragEnter
、onDragMove
、onDragLeave
、onDrop
和onDragEnd
等事件。 - 在这些事件回调中,确保已正确处理拖拽数据的传输和接收。
- 对于需要自定义拖拽响应的控件,确保已正确实现
-
检查API版本兼容性:
- 拖拽功能从API Version 7开始支持,确保你的开发环境、鸿蒙系统版本以及目标设备的API版本均支持拖拽功能。
-
调试与排查:
- 使用DevEco Studio的调试工具,检查拖拽过程中是否有异常信息输出。
- 尝试在不同设备、不同系统版本上测试拖拽功能,以排除特定环境的问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。