写点什么

【每日学点 HarmonyOS Next 知识】对话框回调问题、输入区域最大行数、web 自定义节点、icon 图标库、软键盘开关

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

    阅读完需:约 8 分钟

【每日学点HarmonyOS Next知识】对话框回调问题、输入区域最大行数、web自定义节点、icon图标库、软键盘开关

1、HarmonyOS 使用 promptAction.openCustomDialog(contentNode);无法触发 onWillDismiss 回调?

使用 promptAction.openCustomDialog(contentNode);无法触发 onWillDismiss 回调


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

  2. 在 onWillDismiss 回调中,不能再做 onWillDismiss 拦截。


参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-alert-dialog-box-V5

2、HarmonyOS TextArea 设置 maxLines(3),超过 3 行还可以继续增高?

想要实现,没有输入的时候,默认高度是 3 行的高度,超过 10 行输入框的内容就可滚动显示,要怎么修改呢


参考以下代码示例:


TextArea({ placeholder: "请输入手机号" })  .width(300)  .placeholderColor(Color.Gray)  .placeholderFont({ size: 20 })  .fontColor(Color.Black)  .fontSize(20)  .backgroundColor(Color.Orange)  .margin({ top: 35, left: 25 })  .caretColor(Color.Green)  .maxLines(3)  .constraintSize({ maxHeight: 90 })
复制代码

3、HarmonyOS 动态创建场景中,挂载 web 组件的自定义节点 BuilderNode 调用 dispose 后,原先与该 web 绑定的 webviewController 是否也会解绑?

这种情况下不会解绑

4、HarmonyOS icon 图标库?

系统有没有自带常用的 icon


参考如下链接:https://developer.huawei.com/consumer/cn/design/harmonyos-icon/![[Pasted image 20250120235112.png]]

5、HarmonyOS 如何手动打开/关闭系统软件盘?

可以通过 focusControl.requestFocus 控制输入框获焦,组件获焦后会自动弹起软键盘。


  1. 通过让 TextInput 失焦的方法,让软键盘收起,比如通过让别的组件获焦而使当前组件失焦,可以将焦点转移给其他组件, 例如,提供一个 button 组件,并设置点击时可获焦,当点击按钮时,可让 TextInput 失焦,软键盘收起

  2. 使用 focusContrl.requestFocus 接口使指定组件获取焦点。可参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-focus-V5


TextInput:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-textinput-V5


注意 Text、Image 等组件则默认状态为不可获焦。不可获焦状态下,无法触发焦点事件。


// xxx.ets@CustomDialogstruct CustomDialogExample {  private focusKey = 'name_input'; // 输入框焦点  controller?: CustomDialogController  cancel: () => void = () => {  }  confirm: () => void = () => {  }
// onPageHide(): void { // focusControl.requestFocus(this.focusKey) // }
build() { Column() { Text('这是自定义弹窗') .fontSize(30) .height(100)
Text('昵称') .fontSize(20) .margin({ top: 10, bottom: 10 }) // .key(this.focusKey) // .id(this.focusKey)
TextInput({ placeholder: '输入昵称',text:'', }) .height(60) .width('90%') .defaultFocus(true)
Button('测试') .key(this.focusKey)

Button('点我关闭弹窗') .onClick(() => { if (this.controller != undefined) { this.controller.close() } }) .margin(20) } }}@Entry@Componentstruct CustomDialogUser { dialogController: CustomDialogController | null = new CustomDialogController({ builder: CustomDialogExample({ cancel: ()=> { this.onCancel() }, confirm: ()=> { this.onAccept() } }), cancel: this.existApp, autoCancel: true, onWillDismiss:(dismissDialogAction: DismissDialogAction)=> { console.info("reason=" + JSON.stringify(dismissDialogAction.reason)) console.log("dialog onWillDismiss") if (dismissDialogAction.reason == DismissReason.PRESS_BACK) { dismissDialogAction.dismiss() } if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) { dismissDialogAction.dismiss() } }, alignment: DialogAlignment.Center, offset: { dx: 0, dy: -20 }, customStyle: false, cornerRadius: 20, width: 300, height: 400, borderWidth: 1, borderStyle: BorderStyle.Dashed,//使用borderStyle属性,需要和borderWidth属性一起使用 borderColor: Color.Blue,//使用borderColor属性,需要和borderWidth属性一起使用 backgroundColor: Color.White, shadow: ({ radius: 20, color: Color.Grey, offsetX: 50, offsetY: 0}), }) // 在自定义组件即将析构销毁时将dialogController置空 aboutToDisappear() { this.dialogController = null // 将dialogController置空 }
onCancel() { console.info('Callback when the first button is clicked') }
onAccept() { console.info('Callback when the second button is clicked') }
existApp() { console.info('Click the callback in the blank area') }
build() { Column() { Button('click me') .onClick(() => { if (this.dialogController != null) { this.dialogController.open() } }).backgroundColor(0x317aff) }.width('100%').margin({ top: 5 }) }}
复制代码


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

轻口味

关注

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

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

评论

发布
暂无评论
【每日学点HarmonyOS Next知识】对话框回调问题、输入区域最大行数、web自定义节点、icon图标库、软键盘开关_HarmonyOS_轻口味_InfoQ写作社区