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)  
    }  
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.

关于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键盘事件生效
2292浏览 • 1回复 待解决
HarmonyOS onKeyEvent 按钮触发
344浏览 • 1回复 待解决
HarmonyOS @Observed生效问题
1252浏览 • 1回复 待解决
HarmonyOS margin生效问题
734浏览 • 1回复 待解决
HarmonyOS targetSpace生效问题
565浏览 • 1回复 待解决
HarmonyOS margin生效
1137浏览 • 1回复 待解决
HarmonyOS expandSafeArea生效
1022浏览 • 1回复 待解决
创建的单例换了页面后生效问题
2627浏览 • 3回复 待解决
abiFilters配置生效
994浏览 • 1回复 待解决
HarmonyOS Web组件borderRadius生效
735浏览 • 1回复 待解决
HarmonyOS Stack 里 align生效
698浏览 • 1回复 待解决
HarmonyOS Span内边距生效
428浏览 • 1回复 待解决
HarmonyOS photoViewPicker智能推荐生效
946浏览 • 1回复 待解决
ConstraintSize尺寸设置生效
2864浏览 • 1回复 待解决
HarmonyOS stack设置圆角生效
664浏览 • 1回复 待解决
HarmonyOS 单例模式生效
554浏览 • 1回复 待解决
HarmonyOS hitTestBehavior.block生效
921浏览 • 1回复 待解决
HarmonyOS Panel 设置 borderRadius 生效
1462浏览 • 1回复 待解决
容器组件onVisibleAreaChange生效
2416浏览 • 1回复 待解决