ts-universal-focus-event.md 2.0 KB
Newer Older
Z
zengyawen 已提交
1 2
# 焦点事件

T
explain  
tianyu 已提交
3 4
焦点事件指页面焦点在组件间移动时触发的事件,组件可使用焦点事件来更改内容。

H
geshi  
HelloCrease 已提交
5
>  **说明:**
Z
zengyawen 已提交
6 7 8 9 10 11 12 13 14 15
> 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。


## 权限列表




## 事件

T
explain  
tianyu 已提交
16
| **名称** | **支持冒泡** | **功能描述** |
Z
zengyawen 已提交
17
| -------- | -------- | -------- |
T
explain  
tianyu 已提交
18 19
| onFocus(callback: () => void) | 否 | 当前组件获取焦点时触发的回调。 |
| onBlur(callback:() => void) | 否 | 当前组件失去焦点时触发的回调。 |
Z
zengyawen 已提交
20

H
geshi  
HelloCrease 已提交
21
>  **说明:**
Z
zengyawen 已提交
22 23 24 25 26
> 支持焦点事件的组件:Button、Text、Image、List、Grid。


## 示例

H
geshi  
HelloCrease 已提交
27 28
```ts
// xxx.ets
Z
zengyawen 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
@Entry
@Component
struct FocusEventExample {
  @State textOne: string = ''
  @State textTwo: string = ''
  @State textThree: string = ''
  @State oneButtonColor: string = '#FF0000'
  @State twoButtonColor: string = '#87CEFA'
  @State threeButtonColor: string = '#90EE90'

  build() {
    Column({ space:20 }){
      Button(this.textOne)
        .backgroundColor(this.oneButtonColor)
        .width(260).height(70).fontColor(Color.Black)
        .focusable(true)
        .onFocus(() => {
          this.textOne = 'First Button onFocus'
          this.oneButtonColor = '#AFEEEE'
        })
        .onBlur(() => {
          this.textOne = 'First Button onBlur'
          this.oneButtonColor = '#FFC0CB'
        })
      Button(this.textTwo)
        .backgroundColor(this.twoButtonColor)
        .width(260).height(70).fontColor(Color.Black)
        .focusable(true)
      Button(this.textThree)
        .backgroundColor(this.threeButtonColor)
        .width(260).height(70).fontColor(Color.Black)
        .focusable(true)
        .onFocus(() => {
          this.textThree = 'Third Button onFocus'
          this.threeButtonColor = '#AFEEEE'
        })
        .onBlur(() => {
          this.textThree = 'Third Button onBlur'
          this.threeButtonColor = '#FFC0CB'
        })
    }.width('100%').margin({ top:20 })
  }
}
```