一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

概述

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

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

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

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

輸入控件綁定自定義鍵盤(pán)布局

自定義鍵盤(pán)輸入控制

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

自定義鍵盤(pán)彈出與收起

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

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

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

輸入控件綁定自定義鍵盤(pán)布局

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

代碼示例如下:

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

自定義鍵盤(pán)輸入控制

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

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

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

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

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

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

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

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

TextInput({
placeholder:'綁定自定義鍵盤(pán)',
text:this.inputText,
controller:this.textInputController
})
// 監(jiān)聽(tīng)光標(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);
 }
}

自定義鍵盤(pán)彈出與收起

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

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

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

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

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

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

自定義鍵盤(pán)的布局避讓

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

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

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

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

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

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

總結(jié)

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

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

    關(guān)注

    4

    文章

    866

    瀏覽量

    40560
  • 開(kāi)發(fā)者
    +關(guān)注

    關(guān)注

    1

    文章

    636

    瀏覽量

    17468
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2146

    瀏覽量

    32506

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

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

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

    1602自定義字符

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

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

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

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

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

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

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

    自定義視圖組件教程案例

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

    ArkUI如何自定義彈窗(eTS)

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

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

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

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

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

    labview自定義控件

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

    自定義算子開(kāi)發(fā)

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

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

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