写点什么

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

作者:轻口味
  • 2025-03-07
    北京
  • 本文字数:1610 字

    阅读完需:约 5 分钟

【每日学点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) } }) } } }}
复制代码


发布于: 刚刚阅读数: 4
用户头像

轻口味

关注

🏆2021年InfoQ写作平台-签约作者 🏆 2017-10-17 加入

Android、音视频、AI相关领域从业者。 欢迎加我微信wodekouwei拉您进InfoQ音视频沟通群 邮箱:qingkouwei@gmail.com

评论

发布
暂无评论
【每日学点HarmonyOS Next知识】手写电子签名、瀑布流布局获取字符串高度、WaterFlow崩溃、Web滑动问题_HarmonyOS_轻口味_InfoQ写作社区