介紹
本示例介紹如何使用Text元件實現驗證碼場景,並禁用對內容的選中、複製、游標。
效果圖預覽
使用說明
- 單擊元件可彈出輸入法
- 在進行驗證碼輸入時,無法對中間單個數字進行更改,無法選中輸入內容,無游標
實現思路
- 因為要禁用複製、選中等功能,這裡使用了Text元件,而不是TextInput
ForEach(this.codeIndexArray, (item: number, index: number) => {
Text(this.codeText[item])
.verifyCodeUnitStyle()
}, (item: number, index: number) => item.toString())
- 繫結輸入法,並預設顯示鍵盤
this.inputController.attach(true, textConfig);
- 訂閱輸入法插入、刪除事件,從而獲取輸入內容
this.inputController.on("insertText", (text: string) => {
if (this.codeText.length >= this.verifyCodeLength) {
return;
}
this.codeText += text;
})
this.inputController.on("deleteLeft", (length: number) => {
this.codeText = this.codeText.substring(0, this.codeText.length - 1);
})
- 由於這裡使用的是Text元件,而非TextInput元件,因此需要每次點選目標的元件的時候都重新繫結,並設定鍵盤的顯示,而不能直接使用showSoftKeyboard
Flex(){
//...
}.onClick(() => {
this.attach();
})
- 當元件的可視面積變化的時候進行繫結與解綁
.onVisibleAreaChange([0.0, 1, 0], async (isVisible: boolean, currentRatio: number) => {
if (isVisible && currentRatio >= 1.0) {
await this.attach();
this.listen();
}
if (!isVisible && currentRatio <= 0.0) {
this.dettach();
}
})
高效能知識點
不涉及
工程結構&模組型別
verifycode // har型別
|---constants
| |---VerifyCodeConstants.ets // 常量
|---view
| |---VerifyCodeView.ets // 檢視層-驗證碼元件
模組依賴
- routermodule:模組動態匯入使用
- common/utils:使用日誌功能
參考資料
- Text
- inputMethod