HarmonyOS 自定义弹窗、自定义键盘自动关闭问题

通过CustomDialogController弹出一个自定制的弹窗内容。请问,自定义弹窗是否可以实现以下效果:假设弹窗未覆盖区域有很多其他视图,如滚动视图、按钮等,希望这些视图发生点击、长按、滚动时能够自动关闭弹窗,这些视图的事件很零散,在每个事件中都插入关闭弹窗的代码有些不现实。autoCancel设置为true时,能够优先关闭弹窗,但是会拦截一次用户操作,如弹窗弹出时,点击一个按钮,会先关闭弹窗,第二次点击时才能触发按钮点击事件,这种交互不符合期望。期望能够一次点击,既触发按钮事件,也能够关闭弹窗。

HarmonyOS
4h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

首先对于自定义键盘的问题,输入框类的组件在customKeyboard()方法中在输入控件失去焦点时,关闭自定义键盘,可以通过stopEditing方法控制键盘的关闭,以TextInput组件为例,可以参考以下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-textinput-V5#ZH-CN_TOPIC_0000001884917738__customkeyboard10

其次,对于自定义弹窗问题,当前可以使用onWillDismiss()回调结合业务方自行设计处理逻辑实现关闭弹窗且触发事件,比如:通过监听CustomDialogController的onWillDismiss()回调,在回调中判断DismissDialogAction的reason属性为TOUCH_OUTSIDE:

onWillDismiss:(dismissDialogAction: DismissDialogAction)=> {
  if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
    dismissDialogAction.dismiss()
    // 接着由业务方自行处理后续逻辑
  }
}

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-custom-dialog-box-V5在上面监听到点击遮罩层时,先让自定义弹窗消失,然后可以通过事件通知的形式发送事件,在事件订阅处处理接收到的事件,可以根据不同的事件ID或者是传递的不同的data来区分不同组件需要处理的事件逻辑,不同组件的事件逻辑通过定义不同的方法处理:

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-V5

分享
微博
QQ
微信
回复
1h前
相关问题
自定义弹窗自定义转场动画
1128浏览 • 1回复 待解决
HarmonyOS 自定义键盘
237浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
694浏览 • 1回复 待解决
HarmonyOS 自定义弹窗CustomDialog问题
609浏览 • 1回复 待解决
HarmonyOS TextInput自定义键盘问题
582浏览 • 1回复 待解决
自定义弹窗使用相关问题
922浏览 • 1回复 待解决
HarmonyOS 自定义弹窗 (CustomDialog)问题
393浏览 • 1回复 待解决
HarmonyOS 自定义弹窗选择
353浏览 • 1回复 待解决
弹窗打开、关闭动画是否支持自定义
2358浏览 • 1回复 待解决
HarmonyOS TextInput绑定自定义键盘问题
542浏览 • 1回复 待解决
HarmonyOS TextInput自定义键盘
405浏览 • 1回复 待解决
HarmonyOS 自定义弹窗部分问题答疑
311浏览 • 1回复 待解决
HarmonyOS WebView使用自定义键盘问题
15浏览 • 1回复 待解决
HarmonyOS 全局自定义弹窗demo
286浏览 • 1回复 待解决
小程序示例自定义键盘
281浏览 • 1回复 待解决
HarmonyOS 自定义弹窗遮罩未全屏
665浏览 • 1回复 待解决