当前位置: 首页 > article >正文

【每日学点HarmonyOS Next知识】手写电子签名、瀑布流布局获取字符串高度、WaterFlow崩溃、Web滑动问题

【每日学点HarmonyOS Next知识】手写电子签名、瀑布流布局获取字符串高度、WaterFlow崩溃、Web滑动问题

1、HarmonyOS 是否有手写电子签名 然后生成图片的demo?

是否有手写电子签名 然后生成图片的demo,希望能提供一个

可以参考:https://gitee.com/harmonyos-cases/cases/tree/master/CommonAppDevelopment/feature/handwritingtoimage

2、HarmonyOS 瀑布流布局获取字符串高度?

可以使用组件区域事件onAreaChange(event: (oldValue: Area, newValue: Area) => void)来获取Text组件的整体高度

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-component-area-change-event-V5#onareachange

onAreaChange(event: (oldValue: Area, newValue: Area) => void): T

组件区域变化时触发该回调。仅会响应由布局变化所导致的组件大小、位置发生变化时的回调。

由绘制变化所导致的渲染属性变化不会响应回调,如translate、offset。若组件自身位置由绘制变化决定也不会响应回调,如bindSheet。

3、HarmonyOS 使用WaterFlow 结合WaterFlowSection过程中发生崩溃?

使用WateFlow + WaterFlowSection 过程中,将它作为PicturePullDownRefresh 的customList 时,在初始化展示过程中发生崩溃。

将WaterFlowSource.ets页面的 let r = this.mSections.update(index, update)改为let r = this.mSections.splice(index, 1, [update]),可以解决问题

4、HarmonyOS Web组件嵌套滚动 当web 内容超过屏幕长度,web底部的内容无法滑动联动?

固定头部和底部,在最外层的Column加一个内部高度

Column() {
 /// 
}.width('100%').padding({bottom: 40}) 

头部和底部跟着web内容滚动, 就把头部和底部, 放到Scroll组件里面

Web({
  src: $rawfile("aa.html"),
  controller: this.controller,
  renderMode: RenderMode.SYNC_RENDER
})
  .layoutMode(WebLayoutMode.FIT_CONTENT)
  .width("100%")
  .zoomAccess(false)
  .nestedScroll({
    scrollForward: NestedScrollMode.SELF_FIRST,
    scrollBackward: NestedScrollMode.SELF_FIRST,
  })
5、HarmonyOS NodeController的onTouchEvent函数中无法获取到this?

使用了QueryImageNodeController继承自NodeController,QueryImageNodeController中维护了一个nodeArray,点击后onTouchEvent被回调,发生崩溃Cannot read property nodeArray of undefined,为什么获取不到this?如果获取不到this,无法在onTouchEvent完成点击后的一些操作。

参考demo:

export class QueryImageNodeController extends NodeController {
  private rootNode?: FrameNode
  private nodeArray: Array<ImageNode> = []
  queryImageTouchCallBack?: QueryImageTouchCallBack

  makeNode(uiContext: UIContext): FrameNode {
    this.rootNode = new FrameNode(uiContext)
    const rootRenderNode = this.rootNode.getRenderNode()
    if (rootRenderNode) {
      this.nodeArray.forEach((item) => {
        rootRenderNode.appendChild(item.renderNode)
      })
    }
    return this.rootNode
  }

  onTouchEvent?(event: TouchEvent): void {
    let that = this
    if (event.type === TouchType.Down) {
      if (event.touches.length > 0) {
        const lastTouch = event.touches[event.touches.length - 1]
        let x = lastTouch.x
        let y = lastTouch.y
        this.nodeArray.forEach((node, index) => { // this是undefined,无法获取到当前类的一些参数<---------
          let box = node.boxItem?.box
          if (!box) {
            return
          }
          if (x > box.x1 && x < box.x2 && y > box.y1 && y < box.y3) {
            that.queryImageTouchCallBack?.onRectTouch(node.boxItem?.questionIndex ?? 0)
          }
        })
      }
    }
  }
}

http://www.kler.cn/a/571947.html

相关文章:

  • 记一次误禁用USB导致键盘鼠标失灵的修复过程
  • BambuStudio学习笔记:Geometry类
  • Linux系列:如何用 C#调用 C方法造成内存泄露
  • 计算机毕业设计SpringBoot+Vue.js网上服装商城(源码+文档+PPT+讲解)
  • 科技快讯 | 启明星辰发布“大模型访问脱敏罩”;清华大学将扩招本科生,重点培养 AI 人才;“中国首个 AI IDE”字节跳动 Trae 国内版发布
  • 文件上传靶场(1--9关)
  • Qt 的绘图中的顺序
  • 职坐标AIGC课程实战项目深度解析
  • 【论文笔记】3DGS压缩相关工作2篇
  • 【计算机网络03】网络层协议IP(详细)
  • CRM一张表单开发的思路
  • 图论基础算法: 二分图的判定(C++)
  • Unity NGUI新手向几个问题记录
  • 基于 HTML、CSS 和 JavaScript 的智能九宫格图片分割系统
  • 使用Python或R语言重新拟合模型
  • 一文讲解GO中日志
  • FastGPT 引申:知识库辅助开发(代码符号自动提取与文件匹配工具详解)
  • K8S学习之基础十一:容器钩子
  • 【最后203篇系列】010 关于矩阵的一点思考
  • pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码