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

【每日学点HarmonyOS Next知识】防止重复点击、对话框收拾拦截、自定义键盘焦点、页面层级、自定义对话框创建

1、HarmonyOS onClick点击事件,如何实现重复点击同一个按钮或toggle,两次间隔时间过短则失效,来防止重复点击?

onClick点击事件,如何实现重复点击同一个按钮或toggle,两次间隔时间过短则失效,来防止重复点击

参考demo:

//定义一个节流函数throttle
function throttle(func: Function, interval: number) {let lastTime = 0;return () => {const nowTime = Date.now();const remainTime = interval - (nowTime - lastTime);if (remainTime <= 0) {lastTime = nowTime;func();}};
}
//示例
Button("防止重复点击").onClick(throttle(()=>{},5000))
2、HarmonyOS CustomDialog弹窗,返回手势时会消失,在哪里可以拦截这个事件?

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-custom-dialog-box-V5#ZH-CN_TOPIC_0000001884757950__customdialogcontrolleroptions%E5%AF%B9%E8%B1%A1%E8%AF%B4%E6%98%8E

说明:

  1. 当用户执行点击遮障层关闭、左滑/右滑、三键back、键盘ESC关闭交互操作时,如果注册该回调函数,则不会立刻关闭弹窗。在回调函数中可以通过reason得到阻拦关闭弹窗的操作类型,从而根据原因选择是否能关闭弹窗。当前组件返回的reason中,暂不支持CLOSE_BUTTON的枚举值。
  2. 在onWillDismiss回调中,不能再做onWillDismiss拦截。
3、HarmonyOS 如何控制自定义键盘获取焦点和失去焦点?

如何控制自定义键盘获取焦点和失去焦点

参考demo:

@Entry
@Component
struct TextInputExample {controller: TextInputController = new TextInputController()@State inputValue: string = ""// 自定义键盘组件@Builder CustomKeyboardBuilder() {Column() {Grid() {ForEach([1, 2, 3, 4, 5, 6, 7, 8, 9, '*', 0, '#'], (item:number|string) => {GridItem() {Button(item + "").width(110).onClick(() => {this.inputValue += item})}})}.maxCount(3).columnsGap(10).rowsGap(10).padding(5)}.backgroundColor(Color.Gray)}build() {Column() {Button('拉起键盘').onClick(() => {focusControl.requestFocus('txt1')}).id('btn1')Button('收起键盘').onClick(() => {focusControl.requestFocus('btn1')})TextInput({ controller: this.controller, text: this.inputValue })// 绑定自定义键盘.customKeyboard(this.CustomKeyboardBuilder()).margin(10).border({ width: 1 }).height('48vp').id('txt1')TextInput({ placeholder: '没有关联自定义键盘' })}}
}
4、HarmonyOS har默认router所在的层级是主窗口还是跟随所在的HSP router层?

主窗口A,子窗口B,其中主窗口A存在HSP活检模块(隐私中间页面-》人脸har活检页面),子窗口B点击跳转HSP活检模块隐私中间页面(getUIContext().getRouter),活检模块隐私中间页面点击再跳转人脸har,人脸har内部是否不需要getRouter方法进行跳转,人脸har默认router所在的层级是主窗口还是跟随所在的HSP router层?

根据UIContext说明,WindowStage/Window可以通过loadContent接口加载页面并创建UI的实例,所以UI实例和窗口是一一关联的,也就是说想要通过UIContext获取UI实例的话,必须在当前调用界面能追溯到一个UI窗口。如果UI上下文不明确则无法调用。

HSP页面路由跳转可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/in-app-hsp-V5

HSP(Harmony Shared Package)是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。

HAR页面路由跳转可参考(命名路由):https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-routing-V5
页面路由指在应用程序中实现不同页面之间的跳转和数据传递。Router模块通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面。本文将从页面跳转、页面返回、页面返回前增加一个询问框和命名路由这几个方面,介绍如何通过Router模块实现页面路由。

5、HarmonyOS CustomDialogController的创建方式问题?
showCaptch(){let alertDialog: CustomDialogController = new CustomDialogController({builder: DialogSliderCaptch()})alertDialog.open()
}
//放在一个page中,可以正常调用,但公开成如下那样的一个函数,就会报错,很容易复现function showCaptch(){let alertDialog: CustomDialogController = new CustomDialogController({builder: DialogSliderCaptch()})alertDialog.open()
}

在ArkUI中,CustomDialogController是一个页面级别的组件,其生命周期是与页面绑定的。当 将CustomDialogController公开成一个函数时,实际上是将其从页面上下文中剥离出来,导致其无法正常使用。具体来说,CustomDialogController在页面中的使用是通过页面的生命周期管理的,例如在页面加载完成后初始化,并在页面退出时销毁。如果将其公开成一个函数,则无法保证其在正确的生命周期阶段被初始化和销毁,从而导致不可预期的行为。此外,CustomDialogController的一些属性和方法是与页面的生命周期相关的,例如build方法用于在页面中构建UI组件,而在函数中无法复用这个生命周期相关的逻辑。因此,将CustomDialogController公开成一个函数会导致其无法正常工作,因为它失去了与页面的绑定关系。

相关文章:

【每日学点HarmonyOS Next知识】防止重复点击、对话框收拾拦截、自定义键盘焦点、页面层级、自定义对话框创建

1、HarmonyOS onClick点击事件&#xff0c;如何实现重复点击同一个按钮或toggle&#xff0c;两次间隔时间过短则失效&#xff0c;来防止重复点击&#xff1f; onClick点击事件&#xff0c;如何实现重复点击同一个按钮或toggle&#xff0c;两次间隔时间过短则失效&#xff0c;来…...

显示篇(2)- DRM A733 多显主副显绑定

通过hal层根据优先级绑定&#xff0c;优先级越高送显越靠前。&#xff08;sdk默认mipi优先级最高为主显&#xff09; 1.双显 如edp主mipi副&#xff0c;edp优先级搞。 更改如下 diff --git a/hwc-hal/drm/drmConnector.cpp b/hwc-hal/drm/drmConnector.cpp --- a/hwc-hal/d…...

mysql的Innodb最大支持的索引长度是多少,以及索引长度怎么计算

今天正好有空&#xff0c;来讲个之前粉丝经常问的一个知识&#xff0c;就是mysql的Innodb最大支持的索引长度是多少&#xff1f;以及索引长度怎么计算&#xff1f; 一、mysql的innodb引擎&#xff0c;创建索引最大支持的长度是多少字节&#xff1f; 不墨迹&#xff0c;直接说…...

Android Compose: `remember` 与 `ViewModel` 保存数据的优缺点对比

在开发 Android 应用时&#xff0c;管理 UI 状态是一个不可避免的话题。Jetpack Compose 提供了两种常见的方式来保存和管理数据&#xff1a;remember 和 ViewModel。它们各有优缺点&#xff0c;适用于不同的场景。 本文将详细对比这两者在保存数据时的优缺点&#xff0c;帮助…...

vue3+vite模式下修改pinia的stroe初始值不进行热HMR更新解析

原因&#xff1a; import { defineStore } from pinia interface CounterState {count: number;name: string; } export const useCounterStore defineStore(counter, {state: () > ({ count: 10, name: Eduardo }),getters: {doubleCount: (state:CounterState) > st…...

【一句话经验】ubuntu vi/vim 模式自动设置为paste

从centos过来&#xff0c;发现ubutun有些地方不习惯&#xff0c;尤其是vi的粘贴&#xff0c;默认自动进去了代码模式&#xff0c;导致每次粘贴必须得set paste&#xff0c;否则会出现问题。 解决办法非常简单&#xff0c;按照下面命令执行即可&#xff1a; cd ~ echo "…...

[杂学笔记] TCP和UDP的区别,对http接口解释 , Cookie和Session的区别 ,http和https的区别 , 智能指针 ,断点续传

文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别 tcp的特点&#xff1a; 面向连接&#xff0c;可靠性高&#xff0c;全双工&#xff0c;面向字节流udp特点&#xff1a;无连接&#xff0c;不…...

训练大模型LLM选择哪种开发语言最好

训练大型语言模型&#xff08;LLM&#xff09;时&#xff0c;选择合适的编程语言主要取决于效率、生态支持、开发便利性以及特定需求&#xff08;如性能优化或硬件适配&#xff09;。以下是常见语言的分析和推荐&#xff1a; --- 1. Python&#xff08;首选语言&#xff09; 优…...

Jupyter Notebook 全平台安装与配置教程(附Python/Anaconda双方案)

一、软件定位与特性 Jupyter Notebook 是交互式编程与数据科学分析工具&#xff0c;支持 40 编程语言&#xff0c;其基于浏览器的「代码块可视化」工作流&#xff0c;已成为机器学习、数据清洗、学术研究的标准环境。核心优势包括&#xff1a; 实时执行代码片段并保存结果支持…...

AutoDL平台租借GPU,创建transformers环境,使用VSCode SSH登录

AutoDL平台租借GPU&#xff0c;创建transformers环境&#xff0c;使用VSCode SSH登录 一、AutoDl平台租用GPU 1.注册并登录AutoDl官网&#xff1a;https://www.autodl.com/home 2.选择算力市场&#xff0c;找到需要的GPU&#xff1a; 我这里选择3090显卡 3.这里我们就选择P…...

【Java篇】行云流水,似风分岔:编程结构中的自然法则

文章目录 Java 程序逻辑控制&#xff1a;顺序、分支与循环结构全面解析一、顺序结构二、分支结构2.1 if 语句2.1.1 基本语法2.1.2 if-else 语句2.1.3 if-else if-else 语句 2.2 switch 语句 三、循环结构3.1 while 循环3.2 break 语句3.3 continue 语句3.4 for 循环 四、输入输…...

2.4 基于Vitest的单元测试基础设施搭建

文章目录 1. 现代单元测试体系解析测试金字塔演进Vitest核心定位2. 基础设施架构设计整体架构图3. 环境配置全流程3.1 基础环境搭建3.2 配置文件`vitest.config.ts`3.3 测试环境初始化4. 测试用例编写规范4.1 基础测试示例4.2 Vue组件测试4.3 异步逻辑测试5. Mock策略深度优化5…...

SqlSugar 进阶之原生Sql操作与存储过程写法 【ORM框架】

系列文章目录 &#x1f380;&#x1f380;&#x1f380; .NET开源 ORM 框架 SqlSugar 系列 &#x1f380;&#x1f380;&#x1f380; 文章目录 系列文章目录一、前言 &#x1f343;二、用法介绍三、方法列表四、使用案例五、调用存储过程六、in参数用法七、SqlServer带Go的脚…...

Navicat Premium(数据库管理工具) v17.1.13 中文 Windows

介绍 Navicat Premium 是一款多功能的数据库管理工具&#xff0c;可以连接并管理主流的数据库系统&#xff0c;如MySQL、PostgreSQL、Oracle、SQL Server等。它提供了丰富的功能和强大的工具&#xff0c;可以帮助用户轻松地管理数据库&#xff0c;进行数据导入导出、查询、备份…...

IDEA(十一)调整新版本的工具栏显示Git操作(pull、commit、push、revert等)

目录 一、背景二、操作步骤2.1 开启新 UI 样式2.2 设置 Tool Window 工具栏 一、背景 好久没有更新 IDEA 了&#xff0c;更新之后发现 IDEA 的工具栏消失了。一番操作之后&#xff0c;终于把 IDEA 的工具栏的设置调整好了&#xff0c;在此进行记录调整步骤&#xff0c;供大家学…...

QoS质量配置

他们祝你挺拔&#xff0c;再挺拔一点&#xff1b;我只祝你&#xff0c;永远年少&#xff0c;永远一骑当先. 1. QoS的概念 QoS(服务质量)是指一个网络能够利用各种各样的基础技术向选定的网络通信提供更好 的服务的能力。这些基础技术包括&#xff1a;帧中继&#xff08;FrameR…...

2024年群智能SCI1区TOP:混沌可行性恢复粒子群算法CEPSO,深度解析+性能实测

目录 1.摘要2.改进策略3.结果展示4.参考文献5.代码获取 1.摘要 本文研究了解决二阶段非线性固定费用运输问题&#xff08;Two-stage NFCTP&#xff09;&#xff0c;该问题的特点是每条运输弧线都与固定费用和与运输量的平方成正比的变量费用相关联。由于涉及固定费用和非线性组…...

ORACLE EBS数据库RELINK方式搭建克隆环境

ORACLE EBS系统的数据库&#xff0c;一般都安装了很多特定功能的小补丁来解决特定的BUG&#xff1b;因此对于已经安装好的系统&#xff0c;想要克隆一套测试环境、搭建一个新的备机做测试等&#xff0c;如果按照生产环境标准&#xff0c;则需要安装大量补丁&#xff0c;带来很大…...

第十五届蓝桥杯省赛电子类单片机学习过程记录(客观题)

客观试题: 01.典型的BUCK电源电路包含哪些关键器件(ABCD) A. 电容 B. 二极管 C. 电感 D. MOSFET 解析: 典型的 BUCK 电源电路是一种降压型的直流-直流转换电路,它包含以下关键器件: A.电容:电容在电路中起到滤波的作用。输入电容用于平滑输入电压的波动,减少电源噪声对…...

使用 invideo ai 实现文生视频

https://ai.invideo.io 然后选ai生成视频 输入描述&#xff0c;点击生成 就可以得到视频了&#xff0c;可以下载...

ChatGPT插件开发者签证通道开放?深度解析2026年美国USCIS新增O-1B“AI原生应用架构师”认证路径

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT插件生态系统的演进脉络与O-1B新政战略定位 ChatGPT插件系统自2023年3月开放以来&#xff0c;经历了从封闭API集成到开放开发者协议、再到平台化治理的三阶段跃迁。早期插件依赖硬编码函数调用&…...

深圳市2026年打造人工智能先锋城市项目扶持计划申请指南

本项目扶持计划下设十个项目类别&#xff0c;均采用事后奖补类支持方式。1、申报单位需同时满足基础申报条件和专项申报条件。基础申报条件如下&#xff1a;&#xff08;一&#xff09;申报单位为在深圳市内&#xff08;含深汕特别合作区&#xff09;从事生产经营活动&#xff…...

基于MCP协议构建阿里云SLS日志AI查询助手:原理、部署与实战

1. 项目概述&#xff1a;当阿里云SLS遇上MCP如果你正在用阿里云日志服务&#xff08;SLS&#xff09;做日志分析&#xff0c;同时又想用上像Claude、Cursor这类AI编程助手来帮你写查询、分析数据&#xff0c;那你可能已经感受到了一个痛点&#xff1a;如何在AI助手和你的日志数…...

Python 内置函数:性能优势与使用技巧

Python 内置函数&#xff1a;性能优势与使用技巧 1. 技术分析 1.1 内置函数优势 Python内置函数由C实现&#xff0c;具有显著性能优势&#xff1a; 内置函数特点C实现: 底层用C编写优化: 经过高度优化内存效率: 内存使用更高效类型优化: 针对特定类型优化1.2 常用内置函数分类 …...

C++/Qt项目内存问题排查:除了Valgrind,这些工具和技巧你也该知道

C/Qt项目内存问题排查&#xff1a;除了Valgrind&#xff0c;这些工具和技巧你也该知道 在开发中等复杂度的Qt桌面或嵌入式应用时&#xff0c;内存问题往往是最难缠的"隐形杀手"。我曾参与过一个医疗影像处理系统的开发&#xff0c;项目后期突然出现随机崩溃&#xff…...

AWE Designer生成的awb文件到底是什么?一份给嵌入式音频开发者的二进制文件解析与烧录避坑指南

AWB文件深度解析&#xff1a;嵌入式音频开发者的二进制文件操作指南 在嵌入式音频开发领域&#xff0c;AWE Designer工具链生成的AWB文件常常让开发者感到神秘又困惑。这个看似普通的二进制文件&#xff0c;实际上承载着音频算法实现的核心逻辑。许多开发者在烧录AWB文件到Flas…...

如何设置Seal视频下载器的智能深色模式:根据时间与系统自动切换

如何设置Seal视频下载器的智能深色模式&#xff1a;根据时间与系统自动切换 【免费下载链接】Seal &#x1f9ad; Video/Audio Downloader for Android, based on yt-dlp 项目地址: https://gitcode.com/gh_mirrors/se/Seal Seal是一款基于yt-dlp的Android视频音频下载器…...

DellFanManagement终极指南:如何彻底掌控戴尔笔记本风扇噪音与散热平衡

DellFanManagement终极指南&#xff1a;如何彻底掌控戴尔笔记本风扇噪音与散热平衡 【免费下载链接】DellFanManagement A suite of tools for managing the fans in many Dell laptops. 项目地址: https://gitcode.com/gh_mirrors/de/DellFanManagement 还在为戴尔笔记…...

小微团队如何利用 Taotoken 统一管理多个 AI 模型密钥与用量

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 小微团队如何利用 Taotoken 统一管理多个 AI 模型密钥与用量 对于小型开发或产品团队而言&#xff0c;在项目开发中集成多个大语言…...

基于Python与Telegram API构建消息抓取与备份工具实践

1. 项目概述与核心价值 最近在折腾一个挺有意思的小工具&#xff0c;起因是团队内部用Telegram群组做日常沟通和文件分享&#xff0c;时间一长&#xff0c;信息量爆炸&#xff0c;想找点历史资料或者特定文件简直是大海捞针。手动翻记录&#xff1f;效率低到令人发指。市面上虽…...