焦点事件

2024-01-22 11:21 更新

焦点事件指页面焦点在可获焦组件间移动时触发的事件,组件可使用焦点事件来处理相关逻辑。

说明
  • 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

  • 目前仅支持通过外接键盘的tab键、方向键触发。

  • 存在默认交互逻辑的组件例如Button、TextInput等,默认即为可获焦,Text、Image等组件则默认状态为不可获焦,不可获焦状态下,无法触发焦点事件,需要设置focusable属性为true才可触发。

事件

名称支持冒泡功能描述
onFocus(event: () => void)当前组件获取焦点时触发的回调。
onBlur(event:() => void)当前组件失去焦点时触发的回调。

示例

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct FocusEventExample {
  5. @State oneButtonColor: string = '#FFC0CB'
  6. @State twoButtonColor: string = '#87CEFA'
  7. @State threeButtonColor: string = '#90EE90'
  8. build() {
  9. Column({ space: 20 }) {
  10. // 通过外接键盘的上下键可以让焦点在三个按钮间移动,按钮获焦时颜色变化,失焦时变回原背景色
  11. Button('First Button')
  12. .backgroundColor(this.oneButtonColor)
  13. .width(260)
  14. .height(70)
  15. .fontColor(Color.Black)
  16. .focusable(true)
  17. .onFocus(() => {
  18. this.oneButtonColor = '#FF0000'
  19. })
  20. .onBlur(() => {
  21. this.oneButtonColor = '#FFC0CB'
  22. })
  23. Button('Second Button')
  24. .backgroundColor(this.twoButtonColor)
  25. .width(260)
  26. .height(70)
  27. .fontColor(Color.Black)
  28. .focusable(true)
  29. .onFocus(() => {
  30. this.twoButtonColor = '#FF0000'
  31. })
  32. .onBlur(() => {
  33. this.twoButtonColor = '#87CEFA'
  34. })
  35. Button('Third Button')
  36. .backgroundColor(this.threeButtonColor)
  37. .width(260)
  38. .height(70)
  39. .fontColor(Color.Black)
  40. .focusable(true)
  41. .onFocus(() => {
  42. this.threeButtonColor = '#FF0000'
  43. })
  44. .onBlur(() => {
  45. this.threeButtonColor = '#90EE90'
  46. })
  47. }.width('100%').margin({ top: 20 })
  48. }
  49. }

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号