91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

概述

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

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

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

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

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

自定義鍵盤輸入控制

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

自定義鍵盤彈出與收起

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

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

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

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

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

代碼示例如下:

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

自定義鍵盤輸入控制

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

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

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

通過對狀態(tài)變量inputText的修改,實現(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);
 }
}

自定義鍵盤彈出與收起

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

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

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

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

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

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

自定義鍵盤的布局避讓

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

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

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

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

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

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

總結(jié)

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

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

    關(guān)注

    4

    文章

    866

    瀏覽量

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

    關(guān)注

    1

    文章

    647

    瀏覽量

    17559
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2126

    瀏覽量

    33155

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

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

    HarmonyOS 的 Component 組件對外提供了一個 DrawTask 接口,通過 addDrawTask 方法為組件添加一個 DrawTask,讓開發(fā)者可以進行自定義繪制邏輯。首先我們
    發(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)用詳細資料免費下載

    本文檔的主要內(nèi)容詳細介紹的是大彩串口屏彈出自定義鍵盤的應(yīng)用詳細資料免費下載。隨著用戶使用不同美工圖片,我們內(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)用詳細資料免費下載

    HarmonyOS 中的幾個自定義控件介紹

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

    自定義視圖組件教程案例

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

    ArkUI如何自定義彈窗(eTS)

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

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

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

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

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

    labview自定義控件

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

    自定義算子開發(fā)

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

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

    labview超快自定義控件制作和普通自定義控件制作
    發(fā)表于 08-21 10:32 ?14次下載
    主站蜘蛛池模板: 午夜精品久久久久久久2023 | 亚洲综合国产一区二区三区 | 香港经典a毛片免费观看爽爽影院 | 日日噜噜夜夜狠狠tv视频免费 | mitunav在线 | 1024国产基地永久免费 | 特级深夜a级毛片免费观看 特级生活片 | 无人码一区二区三区视频 | 欧美色图亚洲自拍 | 福利体验区 | 成在线人永久免费播放视频 | 在线观看日本免费不卡 | 4438x成人网最大色成网站 | 黄色片网站日本 | 亚洲情a成黄在线观看动 | 午夜影院官网 | 三级在线播放 | 午夜免费看视频 | 天天看天天干 | 久久777国产线看观看精品卜 | 香蕉久久久久久狠狠色 | 免费高清在线爱做视频 | 亚洲精品乱码久久久久久蜜桃图片 | 日日噜夜夜噜 | 国产1区2区三区不卡 | 丁香花高清在线观看 | 伊人黄色| 菲菲国产在线观看 | 亚洲五月婷婷 | 丁香激情综合网 | 天天搞夜夜 | 主人扒开腿揉捏花蒂调教cfh | 222www免费观看 | 国产精品大尺度尺度视频 | 77788色淫视频免费观看 | 天天干视频网站 | 亚洲free | 午夜剧场刺激性爽免费视频 | 成年网站在线播放 | 五月天婷婷久久 | 种子天堂bt |