HarmonyOS 鸿蒙Next webview已禁用系统键盘弹出,TextInput还是会唤起

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

HarmonyOS 鸿蒙Next webview已禁用系统键盘弹出,TextInput还是会唤起

项目中需要webview加载H5页面,前端H5已经禁用TextInput唤起系统键盘,现在点击TextInput还是会唤起系统键盘

2 回复

改变焦点状态就不会自动弹窗键盘,

这边是唤起自定义键盘的demo,反正失去焦点事件就不会弹出系统键盘,仅供参考

```

// xxx.ets

[@Entry](/user/Entry)
[@Component](/user/Component)
struct TSPage {
   controller: TextInputController = new TextInputController();

   @State inputValue: string = '';
   @State isShowSystemKeyboard: boolean = false;
   @State threeButtonColor: string = '#90EE90';

   // 自定义键盘组件
   @Builder CustomKeyboardBuilder() {
       Column() {
           Button('x')
               .onClick(() => {
                   // 关闭自定义键盘
                   this.controller.stopEditing();
                   // this.isShowSystemKeyboard = true;
               });

           Button('中文键盘')
               .onClick(() => {
                   focusControl.requestFocus('111');
                   this.isShowSystemKeyboard = !this.isShowSystemKeyboard;
               })
               .margin(10)
               .border({ width: 1 });

           Grid() {
               ForEach([1, 2, 3, 400, 5, 6, 7, 800, 9, '*', 0, '#', 1, 2, 3, 4, 5, 6, 7, 8, 9], (item: number | string) => {
                   GridItem() {
                       Button(item + '')
                           .width('100%')
                           .onClick(() => {
                               this.inputValue += item;
                           })
                           .backgroundColor(Color.Gray);
                   }
               });
           }
           .id('TextInput')
           .columnsTemplate('1fr 1fr 1fr 1fr')
           .rowsTemplate('1fr 1fr 1fr 1fr')
           .width('100%')
           .height('200vp')
           .maxCount(4)
           .columnsGap(10)
           .rowsGap(10)
           .padding(5);
       }
       .focusable(true)
       .width('100%')
       .backgroundColor(Color.White);
   }

   build() {
       Column() {
           TextInput({ controller: this.controller, text: this.inputValue })
               // 添加key属性让焦点转移到指定组件上
               .key('111')
               .backgroundColor(this.threeButtonColor)
               // 绑定自定义键盘
               .customKeyboard(this.isShowSystemKeyboard ? undefined : this.CustomKeyboardBuilder())
               .margin(10)
               .border({ width: 1 })
               .onFocus(() => {
                   this.threeButtonColor = '#FF0000';
               })
               .onBlur(() => {
                   this.threeButtonColor = '#90EE90';
               });
       }
   }
}

针对您提到的HarmonyOS鸿蒙系统中,Next webview已禁用系统键盘弹出,但TextInput还是会唤起的问题,这通常涉及到系统UI组件的默认行为与webview设置之间的交互。在HarmonyOS开发中,webview组件可能会继承或触发一些系统级的默认行为,即便在代码中进行了相应设置。

解决此类问题,首先需要确认webview的键盘弹出设置是否全面且正确。检查webview的相关配置,确保没有遗漏任何可能影响键盘行为的属性设置。此外,由于HarmonyOS不断更新迭代,系统行为可能有所变化,因此建议查阅最新的官方文档,确认是否有关于webview键盘行为变更的说明。

同时,考虑是否存在其他系统级或应用级的设置影响了键盘的弹出行为。例如,检查应用的全局设置或特定页面的配置,确保它们不会覆盖webview的设置。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在这里,您可以获得更专业的技术支持,帮助您解决HarmonyOS开发中的各种问题。

回到顶部