HarmonyOS 鸿蒙Next bindSheet 嵌套 Scroll 导致 scroll 的scrollBy 方法失效

发布于 1周前 作者 wuwangju 最后一次编辑是 5天前 来自 鸿蒙OS

下面是我的最小可复现代码 请问我怎么解决这个问题?

点击第一个卡片,不会有任何反应 如果给Scroll添加一个 100%的高度,那scrollBy方法就会起作用,但是整个scroll的滑动就会失效

export struct TestPage {
  scroller: Scroller = new Scroller()


  @Builder myBuilder() {
    Scroll(this.scroller) {
      Column(){
        Row() {
          Text("点击向下滑动550")
            .fontSize("14fp")
            .fontWeight(FontWeight.Bold)
            .fontColor("#fff")
        }
        .clickEffect(DefaultClickEffect)
        .onClick(() => {
          console.log('no search text')
          this.scroller.scrollBy(0, 550)
        })
          .height("210vp")
          .width("100%")
          .backgroundColor("#ffc67272")
          .margin({
            bottom: "10vp"
          })
        ForEach([1,2,3,4,5,6,7,8,9,10,11], (item: number) => {
          Row()
            .height("210vp")
            .width("100%")
            .backgroundColor("#ffc67272")
            .margin({
              bottom: "10vp"
            })
        }, (item: number) => item + "")
      }
    }
    .nestedScroll({
      scrollForward: NestedScrollMode.PARENT_FIRST,
      scrollBackward: NestedScrollMode.SELF_FIRST
    })
    .scrollBar(BarState.Off)
    .edgeEffect(EdgeEffect.None)
    .backgroundColor("#0ff")
    .width('100%')
    // .height("100%")
  }
  build() {
    RelativeContainer(){
      Column(){

      }
      .height("100%")
      .backgroundColor("#ff0")
      .bindSheet(true, this.myBuilder(), {
        width: "100%",
        showClose: false,
        height: "100%",
        enableOutsideInteractive: true,
        preferType: SheetType.BOTTOM,
        title: null,
        dragBar: false,
        borderWidth: 0,
        shouldDismiss: () => {},
        backgroundColor: Color.Transparent,
        borderColor: Color.Transparent,
        scrollSizeMode: ScrollSizeMode.CONTINUOUS,
      })
    }
  }
}

更多关于HarmonyOS 鸿蒙Next bindSheet 嵌套 Scroll 导致 scroll 的scrollBy 方法失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复
加100% 我这能滑。。。‘整个scroll的滑动就会失效’这句话是啥意思?sheet不能滑下去?

更多关于HarmonyOS 鸿蒙Next bindSheet 嵌套 Scroll 导致 scroll 的scrollBy 方法失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


不是,scroll的滑动会失效,scroll 就不能向下滑动了

是在真机上还是模拟器上不能滑动,我试了下,加100%是可以滑动的

在HarmonyOS鸿蒙系统中,当bindSheet嵌套Scroll组件时,若scrollBy方法失效,可能是由于事件冲突或组件层级管理不当引起的。以下是可能的原因及解决方法简述:

  1. 事件传递:检查bindSheetScroll组件的事件处理逻辑,确保滚动事件能够正确传递到Scroll组件。在嵌套结构中,外层组件的事件监听可能会拦截并消耗滚动事件,导致内层Scroll组件无法响应。

  2. 组件状态:验证Scroll组件的可见性和可交互状态。若Scroll组件被设置为不可见或禁用,其scrollBy方法自然无法生效。

  3. 布局约束:检查bindSheetScroll组件的布局约束条件,确保Scroll组件有足够的空间进行滚动。如果布局约束限制了Scroll组件的滚动范围,scrollBy方法将无法达到预期效果。

  4. 版本兼容性:确认使用的HarmonyOS SDK版本是否支持当前的开发需求。在某些版本中,可能存在已知的组件交互问题。

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

回到顶部