HarmonyOS 鸿蒙Next 系统键盘和自定义键盘

发布于 1周前 作者 bupafengyu 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 系统键盘和自定义键盘

TextInput同时关联系统输入法、自定义键盘,需要两个键盘来回切换,应该怎么操作?

3 回复

可以参考这个demo

@Entry
@Component
struct CustomKeyBoardDemo {
  richEditorController: RichEditorController = new RichEditorController()
  @State customKeyboardShow: boolean = false
  @State systemKeyboardShow: boolean = true

  // 自定义键盘组件
  @Builder
  CustomKeyboardBuilder() {
    Column() {
      Grid() {
        ForEach([1, 2, 3, 4, 5, 6, 7, 8, 9, '*', 0, '#'], (item: number | string) => {
          GridItem() {
            Button(item + "")
              .width(110)
          }
        })
      }.maxCount(3).columnsGap(10).rowsGap(10).padding(5)
    }.backgroundColor(Color.Gray)
  }

  build() {
    Column() {
      Row().height("10%")
      List() {
        ListItem() {
          Text('1')
        }

        ListItem() {
          Text('1')
        }

        ListItem() {
          Text('1')
        }

        ListItem() {
          Text('1')
        }

        ListItem() {
          Text('1')
        }

        ListItem() {
          Text('1')
        }
      }.height("80%").backgroundColor("#0afede")

      Row() {
        RichEditor({ controller: this.richEditorController })
          .customKeyboard(this.systemKeyboardShow ? undefined : this.CustomKeyboardBuilder(),
            { supportAvoidance: true })
          .backgroundColor('#F4F4F4')
          .margin(10)
          .id('chatContentFocus')
          .width("60%")
          .borderRadius(15)
        Text('change')
          .onClick(async () => {
            if (this.systemKeyboardShow) {
              // 停止编辑,关闭系统键盘
              this.richEditorController.stopEditing()
              //做延迟
              setTimeout(() => {
                focusControl.requestFocus('chatContentFocus')
              }, 50)
              this.systemKeyboardShow = false
              this.customKeyboardShow = true
            } else {
              // 关闭自定义键盘 切换成系统键盘
              this.richEditorController.stopEditing()

              this.systemKeyboardShow = true
              this.customKeyboardShow = false
              //input重新获取焦点
              focusControl.requestFocus('chatContentFocus')
            }
          }).width(80).height(30)
      }.height("10%")
    }
  }
}

更多关于HarmonyOS 鸿蒙Next 系统键盘和自定义键盘的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以看一下这个帖子,或许会有思路

深色代码主题
复制
.customKeyboard(this.show ? this.CustomKeyboardBuilder() : undefined)

https://developer.huawei.com/consumer/cn/blog/topic/03162475185473327

HarmonyOS 鸿蒙Next系统键盘与自定义键盘的集成与实现,主要依赖于鸿蒙系统提供的输入框架API。

系统键盘是鸿蒙Next系统内置的默认键盘,它提供了基本的输入功能和用户体验。开发者无需额外开发,用户即可直接使用。

对于自定义键盘,鸿蒙Next系统支持开发者根据需求进行个性化开发。开发者需要了解鸿蒙的输入框架和输入法服务(IMS)的相关API。通过这些API,开发者可以实现键盘的布局自定义、按键响应逻辑自定义等功能。

在开发自定义键盘时,开发者需要遵循鸿蒙系统的开发规范,确保键盘应用的安全性、稳定性和兼容性。此外,开发者还需要注意键盘的UI设计,使其符合用户的审美和操作习惯。

自定义键盘开发完成后,开发者可以通过鸿蒙系统的应用商店进行发布和推广。用户在安装并启用自定义键盘后,即可在鸿蒙Next系统中使用。

需要注意的是,鸿蒙Next系统的输入框架和API可能会随着系统版本的更新而发生变化。因此,开发者在开发自定义键盘时,需要关注鸿蒙系统的更新动态,确保键盘应用与最新系统版本兼容。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部