91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS應(yīng)用自定義鍵盤解決方案

HarmonyOS開發(fā)者 ? 來源:HarmonyOS開發(fā)者技術(shù) ? 2025-06-05 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

自定義鍵盤是一種替換系統(tǒng)默認(rèn)鍵盤的解決方案,可實(shí)現(xiàn)鍵盤個(gè)性化交互。允許用戶結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對按鍵布局進(jìn)行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護(hù)層面,自定義鍵盤可以增強(qiáng)用戶輸入的安全性,避免敏感信息被截取或者泄露。本文介紹了自定義鍵盤的實(shí)現(xiàn),并結(jié)合自定義鍵盤和系統(tǒng)鍵盤的切換、自定義鍵盤的布局避讓等場景,介紹了自定義鍵盤的實(shí)際使用方式。

自定義鍵盤的實(shí)現(xiàn)

自定義鍵盤的實(shí)現(xiàn)包括以下5個(gè)步驟:

自定義鍵盤布局實(shí)現(xiàn)

輸入控件綁定自定義鍵盤布局

自定義鍵盤輸入控制

自定義鍵盤光標(biāo)控制

自定義鍵盤彈出與收起

自定義鍵盤布局實(shí)現(xiàn)

自定義鍵盤的布局以自定義組件的方式呈現(xiàn),根據(jù)具體業(yè)務(wù)場景由開發(fā)者實(shí)現(xiàn)。自定義鍵盤的高度通過自定義組件根節(jié)點(diǎn)的height屬性設(shè)置,寬度不可設(shè)置,默認(rèn)鋪滿屏幕。

@Component
exportstructCustomKeyboard{
build() {
 Column() {
  }
 // 修改自定義組件根節(jié)點(diǎn)的height屬性
  .height($r('app.float.keyboard_total_height'))
 }
}

輸入控件綁定自定義鍵盤布局

輸入控件(TextArea、TextInput、RichEditor、Search)支持通過customKeyboard屬性綁定自定義鍵盤布局。綁定自定義鍵盤后,輸入控件獲取焦點(diǎn)時(shí),不會拉起系統(tǒng)鍵盤,而是加載指定的自定義鍵盤。本文后續(xù)以TextInput控件為例進(jìn)行介紹。

代碼示例如下:

build() {
Column() {
 TextInput({
  placeholder:'綁定自定義鍵盤',
  text:this.inputText,
  controller:this.textInputController
  })
  // 綁定自定義鍵盤布局
   .customKeyboard(this.customKeyboard())
 }
}
@Builder
customKeyboard() {
CustomKeyboard()
}

自定義鍵盤輸入控制

自定義鍵盤可以攔截手勢事件,通過對狀態(tài)變量的修改,實(shí)現(xiàn)文本的輸入。

以英文鍵盤為例,監(jiān)聽EnglishButton的onClick事件,修改狀態(tài)變量。

@Component
struct EnglishButton {
@ConsumeinputText: string;
 build() {
  Button(this.getEnglishText(this.item), { type: ButtonType.Normal })
   .onClick(() => {
   // 攔截自定義鍵盤按鈕的點(diǎn)擊事件,根據(jù)業(yè)務(wù)場景修改狀態(tài)變量
   this.inputText =this.keyBoardController.onInput(this.getEnglishText(this.item));
   })
 }
}

通過對狀態(tài)變量inputText的修改,實(shí)現(xiàn)文本輸入。

@Component
exportstructTextInputComponent{
@ProvideinputText:string='';
build() {
 Column() {
  TextInput({
   placeholder:'綁定自定義鍵盤',
   text:this.inputText,
   controller:this.textInputController
   })
  }
 }
}

自定義鍵盤光標(biāo)控制

通過監(jiān)聽TextInput的onTextSelectionChange生命周期,獲取初始光標(biāo)位置、文本輸入后,調(diào)用TextInputController的caretPosition方法,設(shè)置最終光標(biāo)位置。

獲取光標(biāo)位置:

TextInput({
placeholder:'綁定自定義鍵盤',
text:this.inputText,
controller:this.textInputController
})
// 監(jiān)聽光標(biāo)位置變化
 .onTextSelectionChange((start:number, end:number) =>{
 this.keyBoardController.setCaretPosition(start, end);
 })

設(shè)置光標(biāo)位置:

onChange(value: string) {
this.text = value;
if(this.keyBoardType !== Constants.SYSTEM_KEYBOARD) {
 // 設(shè)置光標(biāo)位置
 this.textInputController?.caretPosition(this.targetCaretPos);
 }
}

自定義鍵盤彈出與收起

通過對焦點(diǎn)進(jìn)行控制,可以實(shí)現(xiàn)鍵盤的彈出和收起。開發(fā)者也可以通過TextInputController的stopEditing方法控制鍵盤關(guān)閉,下面的自定義鍵盤示例中,點(diǎn)擊確認(rèn)按鍵關(guān)閉自定義鍵盤。

onInput(value:string):string{
switch(value) {
 case'確定':
  this.textInputController?.stopEditing();
  break;
 }
returnthis.text;
}

自定義鍵盤和系統(tǒng)鍵盤的切換

當(dāng)需要實(shí)現(xiàn)同一個(gè)輸入框內(nèi)可以切換自定義鍵盤和系統(tǒng)鍵盤時(shí),可以通過如下方式實(shí)現(xiàn):

Tab欄點(diǎn)擊“123”、“ABC”按鈕,this.isCustomKeyboardAttach為true,TextInput綁定自定義鍵盤;點(diǎn)擊“中文”按鈕,this.isCustomKeyboardAttach為false,切換系統(tǒng)鍵盤。

TextInput({
 placeholder:'綁定自定義鍵盤',
 text:this.inputText,
 controller:this.textInputController
})
 .customKeyboard(this.isCustomKeyboardAttach ?this.customKeyboard() :null)

自定義鍵盤的布局避讓

使用系統(tǒng)提供的自定義鍵盤避讓功能

為了確保輸入框不被自定義鍵盤擋住,系統(tǒng)默認(rèn)提供了輸入框避讓自定義鍵盤的能力。在TextInput組件的customKeyboard屬性設(shè)置supportAvoidance為true,開啟系統(tǒng)提供的自定義鍵盤避讓功能。

TextInput({
 placeholder:'綁定自定義鍵盤',
 text:this.inputText,
 controller:this.textInputController
})
 .customKeyboard(this.customKeyboard(), { supportAvoidance:true})

系統(tǒng)默認(rèn)的自定義鍵盤避讓功能只能保證輸入框不被遮擋,輸入框下方的組件可能會被自定義鍵盤擋住,如上圖中所示,輸入框下方的tab欄被自定義鍵盤擋住。為解決這一問題,需要開發(fā)者自己實(shí)現(xiàn)自定義鍵盤的避讓功能。

開發(fā)者自己實(shí)現(xiàn)自定義鍵盤的避讓功能

開發(fā)者需要監(jiān)聽自定義鍵盤根節(jié)點(diǎn)的onAreaChange生命周期,獲取自定義鍵盤的高度,根據(jù)實(shí)際場景設(shè)置布局的避讓。

總結(jié)

自定義鍵盤作為可定制化輸入解決方案,通過模塊化架構(gòu)實(shí)現(xiàn)系統(tǒng)鍵盤的功能替代,其核心價(jià)值在于支持按鍵布局的重構(gòu)與界面功能的自定義配置,同時(shí)集成場景化功能擴(kuò)展模塊,顯著提升鍵盤輸入效率與操作舒適度,構(gòu)建輸入數(shù)據(jù)鏈路防護(hù)體系,有效規(guī)避敏感信息泄露風(fēng)險(xiǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 鍵盤
    +關(guān)注

    關(guān)注

    4

    文章

    872

    瀏覽量

    41881
  • 開發(fā)者
    +關(guān)注

    關(guān)注

    1

    文章

    771

    瀏覽量

    18008
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2153

    瀏覽量

    36037

原文標(biāo)題:HarmonyOS應(yīng)用自定義鍵盤解決方案

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    HarmonyOS開發(fā)實(shí)例:【自定義Emitter】

    使用[Emitter]實(shí)現(xiàn)事件的訂閱和發(fā)布,使用[自定義彈窗]設(shè)置廣告信息。
    的頭像 發(fā)表于 04-14 11:37 ?1907次閱讀
    <b class='flag-5'>HarmonyOS</b>開發(fā)實(shí)例:【<b class='flag-5'>自定義</b>Emitter】

    HarmonyOS開發(fā)案例:【 自定義彈窗】

    基于ArkTS的聲明式開發(fā)范式實(shí)現(xiàn)了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實(shí)現(xiàn)自定義彈窗
    的頭像 發(fā)表于 05-16 18:18 ?2501次閱讀
    <b class='flag-5'>HarmonyOS</b>開發(fā)案例:【 <b class='flag-5'>自定義</b>彈窗】

    講解一下HarmonyOS中的幾個(gè)自定義組件用到的知識

    HarmonyOS 的 Component 組件對外提供了一個(gè) DrawTask 接口,通過 addDrawTask 方法為組件添加一個(gè) DrawTask,讓開發(fā)者可以進(jìn)行自定義繪制邏輯。首先我們
    發(fā)表于 03-16 16:05

    551做自定義鍵盤方案,電腦配置工具改鍵值,求程序代碼?

    551做自定義鍵盤方案,電腦配置工具改鍵值,求程序代碼。
    發(fā)表于 06-08 06:20

    1602自定義字符

    1602液晶能夠顯示自定義字符,能夠根據(jù)讀者的具體情況顯示自定義字符。
    發(fā)表于 01-20 15:43 ?1次下載

    工程技術(shù)筆記-彈出自定義鍵盤應(yīng)用

    隨著我們使用不同美工圖片,串口屏內(nèi)置的系統(tǒng)鍵盤將無法完美匹配用戶美工,或者內(nèi)置鍵盤太小,不合適當(dāng)前工程應(yīng)用;自定義系統(tǒng)鍵盤,方便用戶自行根據(jù)自身美工圖片來調(diào)整對應(yīng)的系統(tǒng)
    發(fā)表于 06-15 14:22 ?18次下載

    大彩串口屏彈出自定義鍵盤的應(yīng)用詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是大彩串口屏彈出自定義鍵盤的應(yīng)用詳細(xì)資料免費(fèi)下載。隨著用戶使用不同美工圖片,我們內(nèi)置的系統(tǒng)鍵盤將無法完美匹配用戶美工,或者內(nèi)置鍵盤太小,不合適當(dāng)前工程應(yīng)用;我
    發(fā)表于 05-15 08:00 ?2次下載
    大彩串口屏彈出<b class='flag-5'>自定義</b><b class='flag-5'>鍵盤</b>的應(yīng)用詳細(xì)資料免費(fèi)下載

    HarmonyOS 中的幾個(gè)自定義控件介紹

    HarmonyOS 開發(fā)自定義組件目前還不是很豐富,在開發(fā)過程中常常會有一些特殊效果的組件,這就需要我們額外花一些時(shí)間實(shí)現(xiàn)。
    的頭像 發(fā)表于 01-04 13:49 ?3276次閱讀

    自定義視圖組件教程案例

    自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖button效果) 3.自定義組件-progress(progress效果) 4.
    發(fā)表于 04-08 10:48 ?15次下載

    ArkUI如何自定義彈窗(eTS)

    自定義彈窗其實(shí)也是比較簡單的,通過CustomDialogController類就可以顯示自定義彈窗。
    的頭像 發(fā)表于 08-31 08:24 ?3836次閱讀

    使用基于云自定義IP的解決方案服務(wù)設(shè)計(jì)多媒體解決方案

    對于基于云的多媒體解決方案,有基于云的自定義轉(zhuǎn)碼器 IP,支持自動視頻點(diǎn)播 (VOD) 管道。云服務(wù)提供的解決方案可提取源視頻,使用云媒體轉(zhuǎn)換器處理視頻以在各種設(shè)備上播放,并存儲轉(zhuǎn)碼后的媒體文件以按需交付給最終用戶。
    的頭像 發(fā)表于 10-26 11:17 ?1521次閱讀
    使用基于云<b class='flag-5'>自定義</b>IP的<b class='flag-5'>解決方案</b>服務(wù)設(shè)計(jì)多媒體<b class='flag-5'>解決方案</b>

    使用基于IP的云自定義解決方案服務(wù)設(shè)計(jì)多媒體解決方案

      對于基于云的多媒體解決方案,有基于云的自定義轉(zhuǎn)碼器 IP,支持自動視頻點(diǎn)播 (VOD) 管道。云服務(wù)提供的解決方案可以引入源視頻,使用云媒體轉(zhuǎn)換器處理視頻以在各種設(shè)備上播放,并存儲轉(zhuǎn)碼后的媒體文件以按需交付給最終用戶。
    的頭像 發(fā)表于 11-18 15:25 ?1297次閱讀

    labview自定義控件

    labview自定義精美控件
    發(fā)表于 05-15 16:46 ?22次下載

    自定義算子開發(fā)

    一個(gè)完整的自定義算子應(yīng)用過程包括注冊算子、算子實(shí)現(xiàn)、含自定義算子模型轉(zhuǎn)換和運(yùn)行含自定義op模型四個(gè)階段。在大多數(shù)情況下,您的模型應(yīng)該可以通過使用hb_mapper工具完成轉(zhuǎn)換并順利部署到地平線芯片上……
    的頭像 發(fā)表于 04-07 16:11 ?5361次閱讀
    <b class='flag-5'>自定義</b>算子開發(fā)

    labview超快自定義控件制作和普通自定義控件制作

    labview超快自定義控件制作和普通自定義控件制作
    發(fā)表于 08-21 10:32 ?14次下載