HarmonyOS 鸿蒙Next Swiper嵌套List在响应滚动回调监听里,拿不到离开垂直方向的偏移量 let offsetY = this.listScroller.currentOffset().yOffset;
HarmonyOS 鸿蒙Next Swiper嵌套List在响应滚动回调监听里,拿不到离开垂直方向的偏移量 let offsetY = this.listScroller.currentOffset().yOffset;
更多关于HarmonyOS 鸿蒙Next Swiper嵌套List在响应滚动回调监听里,拿不到离开垂直方向的偏移量 let offsetY = this.listScroller.currentOffset().yOffset;的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是List带的scroller的问题,listScroller不能一直用一个,每个swiper页面都需要用一个新的Scroller,参考下面的示例,可以正常得到yOffset:
class MyDataSource implements IDataSource {
private list: number[] = []
constructor(list: number[]) {
this.list = list
}
totalCount(): number {
return this.list.length
}
getData(index: number): number {
return this.list[index]
}
registerDataChangeListener(listener: DataChangeListener): void {
}
unregisterDataChangeListener() {
}
}
@Entry
@Component
struct Index {
private swiperControl:SwiperController = new SwiperController();
private data: MyDataSource = new MyDataSource([]);
private listData: number[] = []
private listScroller: Scroller[] = [];
aboutToAppear(): void {
let list: number[] = []
for (let i = 1; i <= 10; i++) {
list.push(i);
this.listData.push(i);
this.listScroller.push(new Scroller());
}
this.data = new MyDataSource(list)
}
build() {
RelativeContainer() {
Swiper(this.swiperControl) {
LazyForEach(this.data, (item: string, index: number) => {
Column() {
List({scroller: this.listScroller[index]}) {
ForEach(this.listData, (item:number, index: number) => {
ListItem() {
Text(item.toString())
.width('90%')
.height(160)
.backgroundColor(0xAFEEEE)
.textAlign(TextAlign.Center)
.fontSize(30)
}.onClick(()=>{
console.info("test toffset index: %d", index)
})
})
}.onReachEnd(()=>{
let offsetY = this.listScroller[index].currentOffset().yOffset
console.info("get toffset: %d", offsetY);
})
.height('90%')
.width('100%')
}
.height('100%')
.width('100%')
}, (item: string) => item)
}
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS 鸿蒙Next Swiper嵌套List在响应滚动回调监听里,拿不到离开垂直方向的偏移量 let offsetY = this.listScroller.currentOffset().yOffset;的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,当你遇到在Next Swiper嵌套List组件时,无法在滚动回调监听里正确获取离开垂直方向的偏移量(offsetY)的问题,这通常与组件的滚动事件处理机制或状态同步有关。
确保你的listScroller
对象正确初始化并指向了嵌套的List组件。此外,检查currentOffset()
方法的调用时机和上下文,确保它在滚动事件触发时被正确调用。由于鸿蒙系统的UI框架可能在滚动事件处理上有其特定的逻辑,可能需要确保在UI线程或正确的生命周期阶段调用此方法。
此外,验证currentOffset()
返回的对象结构,确保.yOffset
属性存在且可访问。鸿蒙系统的API可能与常见的Web或移动开发框架有所不同,特别是在处理UI组件状态和事件时。
如果currentOffset()
方法返回的对象结构不符合预期,或者yOffset
属性总是为0或未定义,可能是组件状态未正确更新或事件处理逻辑有误。检查是否有其他代码干扰了滚动状态的更新,或者尝试在不同的生命周期方法或事件回调中调用currentOffset()
。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,