HarmonyOS 关于onKeyEvent不生效问题

使用onKeyEvent监听物理返回键,在pages中监听事件发现onKeyEvent未执行,想要知道onKeyEvent使用场景和使用限制。

HarmonyOS
2024-10-11 12:19:00
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

1、onKeyEvent支持监听组件的事件并触发回调。对于页面级的返回操作可以通过onBackPress()方法来处理相应的逻辑处理与控制。返回true表示页面自己处理返回逻辑,不进行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理。

2、自定义弹出无法控制在屏幕左滑和点击返回时保持不消失状态,建议这种场景下使用自定义组件代替弹窗。demo如下:

@Entry  
@Component  
struct CustomDialogPage {  
  controller: CustomDialogController = new CustomDialogController({ builder: CustomDialogExample({}) })  
  @Provide("isShowed") isShowed: boolean = false  
  @Provide("ifBanBack") ifBanBack: boolean = true  
  onBackPress() {  
    return this.ifBanBack  
  }  
  build() {  
    Column() { //自定义实现 Button('点击操作弹窗')  
      .onClick(() => {  
        this.isShowed = !this.isShowed  
      })  
        .visibility(this.isShowed ? Visibility.None : Visibility.Visible)  
      CustomExample().visibility(this.isShowed ? Visibility.Visible : Visibility.None)  
    }.width('100%').height('100%').justifyContent(FlexAlign.Center)  
  }  
}  
@Component  
struct CustomExample {  
  @Consume("isShowed") isShowed: boolean  
  @Consume("ifBanBack")  
  ifBanBack: boolean  
  
  build() {  
    Column() {  
      Text('This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content.  This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content.')   
      Blank()  
      Row() {  
        Button("拒绝").width(100)  
          .onClick(() => {  
            const context = getContext(this) as common.UIAbilityContext;  
            context.terminateSelf()//退出app }) Button('接受').width(100)   
              .onClick(() => {  
                this.isShowed = false  
                this.ifBanBack = false  
              })  
          }.width('100%').justifyContent(FlexAlign.SpaceAround).padding({ bottom: 10 })  
      }  
      .width('90%').height('70%').backgroundColor('#D5D5D5').borderRadius(10)  
    }  
  }

关于onBackPress的使用可参考官网文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-custom-component-lifecycle-0000001815927708#ZH-CN_TOPIC_0000001815927708__onbackpress

onBackPress是当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效(也就是返回页面时生效)对自定义弹窗不生效。之前的demo时使用自定义组件取代自定义弹窗,是不使用弹窗的。

分享
微博
QQ
微信
回复
2024-10-11 17:11:06
相关问题
Web组件的onKeyEvent键盘事件生效
1944浏览 • 1回复 待解决
HarmonyOS @Observed生效问题
208浏览 • 1回复 待解决
HarmonyOS margin生效
487浏览 • 1回复 待解决
HarmonyOS expandSafeArea生效
171浏览 • 1回复 待解决
HarmonyOS photoViewPicker智能推荐生效
86浏览 • 1回复 待解决
创建的单例换了页面后生效问题
2107浏览 • 3回复 待解决
HarmonyOS 编译器配置生效
332浏览 • 1回复 待解决
HarmonyOS Badge文本颜色设置生效
167浏览 • 1回复 待解决
HarmonyOS 组件切换深色模式生效
297浏览 • 1回复 待解决
HarmonyOS 弹窗封装后open生效
246浏览 • 1回复 待解决
HarmonyOS hitTestBehavior.block生效
272浏览 • 1回复 待解决
HarmonyOS Panel 设置 borderRadius 生效
545浏览 • 1回复 待解决
ConstraintSize尺寸设置生效
2265浏览 • 1回复 待解决
abiFilters配置生效
284浏览 • 1回复 待解决
HarmonyOS right的padding和margin生效
538浏览 • 1回复 待解决
使用position之后height生效
2324浏览 • 1回复 待解决
容器组件onVisibleAreaChange生效
1759浏览 • 1回复 待解决
HarmonyOS部分场景下expandSafeArea生效
785浏览 • 1回复 待解决
HarmonyOS 修改状态栏颜色生效
172浏览 • 1回复 待解决
HarmonyOS 设置了icon和label生效
70浏览 • 1回复 待解决
在嵌套组件中Scroll生效
2035浏览 • 1回复 待解决
音频播放长时任务生效
1836浏览 • 1回复 待解决
Tab 设置 barBackgroundColor为透明生效
205浏览 • 1回复 待解决