HarmonyOS 鸿蒙Next 【如何用代码为一个TextInput请求focus】requestFocus

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 【如何用代码为一个TextInput请求focus】requestFocus

比如页面中有3个TextInput分别用于填写手机号、验证码、密码。
手机号是默认聚焦的TextInput,当用户填写完手机号后,点击“获取验证码”按钮
此时期望验证码的TextInput得到聚焦,以方便让用户填写验证码。
 

2 回复
让某个输入框获取焦点可以使用sendEventByKey方法像该组件发送一个点击事件。方法如下:
```

//  id:要触发事件的组件的id

// action: 点击事件Click: 10;长按事件LongClick: 11

// params: 事件参数,无参数传空字符串 “”

sendEventByKey(id: string, action: number, params: string): boolean


示例代码如下:

@Entry

@Component

struct TextInputExample {

  @State text: string = ‘’

  controller: TextInputController = new TextInputController()

  build() {

    Column() {

      Row() {

        TextInput({ text: this.text, placeholder: ‘请输入用户名’, controller: this.controller })

          .height(40)

          .margin(20)

          .fontSize(14)

          .width(‘90%’)

          .id(‘t1’)

      }

      Row() {

        TextInput({ placeholder: ‘请输入密码’ })

          .height(40)

          .margin(20)

          .type(InputType.Number)

          .maxLength(9)

          .width(‘60%’)

          .id(‘t2’)

        Button(‘获取验证码’)

          .onClick(() => {

            sendEventByKey(‘t2’, 10, ‘’);

          }).width(‘30%’)

      }.justifyContent(FlexAlign.SpaceBetween)

      .width(‘100%’)

    }

  }

}

更多关于HarmonyOS 鸿蒙Next 【如何用代码为一个TextInput请求focus】requestFocus的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,为TextInput组件请求焦点(requestFocus)可以通过直接调用该组件的焦点请求方法实现。具体实现方式如下:

首先,确保你已经在XML布局文件中定义了TextInput组件,并为其分配了一个ID,例如:

<ohos:TextInput
    ohos:id="$+id:my_text_input"
    ohos:width="match_parent"
    ohos:height="wrap_content"
    ohos:hint="Enter text" />

然后,在你的JavaScript代码或ETS(Extend TypeScript)代码中,你可以通过ID获取到这个TextInput组件的引用,并调用其requestFocus方法。以下是一个ETS示例:

@Entry
@Component
struct MyComponent {
    @State private myTextInput: TextInput | undefined = undefined;

    build() {
        Column({ space: 20 }) {
            TextInput({
                id: '$+id:my_text_input',
                ref: (element) => { this.myTextInput = element; },
                hint: "Enter text"
            })
            .onClick(() => {
                if (this.myTextInput) {
                    this.myTextInput.requestFocus();
                }
            });
        }
    }
}

上述代码中,通过ref属性获取到TextInput的引用,并在点击事件中调用requestFocus方法使其获得焦点。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部