#鸿蒙通关秘籍#完整的验证码输入组件的实现方式是什么?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
DataDevil

完整的验证码输入组件实现需要包括以下内容:组件参数定义、自绘控件绑定和事件解绑、输入法事件回调设置以及组件布局。

import { inputMethod } from '@kit.IMEKit';

@Component
export default struct VerifyCodeInput {
  // 参数定义
  @Prop iheight:number|string=48
  @Prop iwidth:number|string=48
  @Prop fontsize:number|string='20fp'
  @Prop count:number=6
  private inputController: inputMethod.InputMethodController = inputMethod.getController();
  private textConfig: inputMethod.TextConfig = {
    inputAttribute: {
      textInputType: inputMethod.TextInputType.NUMBER, // 只能输入数字
      enterKeyType: inputMethod.EnterKeyType.GO
    },
  };
  @Link inputCode: string
  @State countArr: number[] = new Array(this.count??6).fill(' ')
  private isFirst:boolean=true

  async onAttachInput(isFocus?:boolean) {
    try { await this.inputController.attach(isFocus??true, this.textConfig); }
    catch (e) { console.log(JSON.stringify(e)) }
  }

  async onDetachInput() {
    try { await this.inputController.detach() }
    catch (e) { console.log(JSON.stringify(e)) }
  }

  onInputEvent() {
    this.inputController.on("insertText", (text: string) => {
      if (text && this.inputCode.length < this.count && !isNaN(Number(text))) {
        this.inputCode += text;
      }
    })
    this.inputController.on("deleteLeft", (length: number) => {
      this.inputCode = this.inputCode.substring(0, this.inputCode.length - 1);
    })
  }

  offInputEvent(){
    this.inputController.off("insertText");
    this.inputController.off("deleteLeft");
  }

  aboutToDisappear() {
    this.offInputEvent()
    this.onDetachInput()
  }

  build() {
    Column() {
      Row() {
        // 布局和事件代码省略...
      }
    }.width('100%')
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
密码或验证码登录页面完整代码
1478浏览 • 1回复 待解决
HarmonyOS 如何实现滑动验证码功能
447浏览 • 1回复 待解决
前端验证码配合后端实现思路?
3369浏览 • 1回复 待解决
如何实现一个验证码弹窗子窗口
301浏览 • 1回复 待解决