HarmonyOS 鸿蒙Next 输入法列表弹框弹出后点选不起作用

HarmonyOS 鸿蒙Next 输入法列表弹框弹出后点选不起作用 以下是根据文档中弹出当前手机输入法列表的方法,弹出输入法列表后点选某个输入法后不生效(点选的输入法还是之前的输入法)。

@State defaultPattern: number = 1;
private oneHandAction: PatternOptions = {
  defaultSelected: this.defaultPattern,
  patterns: [
  /*{
  icon: $r('app.media.startIcon'),
  selectedIcon: $r('app.media.startIcon')
  },
  {
  icon: $r('app.media.startIcon'),
  selectedIcon: $r('app.media.startIcon')
  },
  {
  icon: $r('app.media.startIcon'),
  selectedIcon: $r('app.media.startIcon'),
  }*/],
  action: (index: number) => {
    mtpLog.debug(TAG, `pattern is changed, current is ${index}`)
    this.defaultPattern = index;
  }
};

private listController: CustomDialogController = new CustomDialogController({
  builder: InputMethodListDialog({ patternOptions: this.oneHandAction }),
  customStyle: true,
  maskColor: '#00000000'
});
this.listController.open()

由于上面这个方法弹出输入法点选后不起作用,所以用了老的api:

changeInputMethod() {
  let inputMethodSetting = inputMethod.getSetting();
  try {
    inputMethodSetting.showOptionalInputMethods((err: BusinessError, data: boolean) => {
      if (err) {
        mtpLog.error(TAG, `Failed to showOptionalInputMethods: ${JSON.stringify(err)}`)
        return;
      }
      mtpLog.debug(TAG, `Succeeded in showing optionalInputMethods.`)
    })
  } catch (err) {
    mtpLog.error(TAG, `Failed to showOptionalInputMethods: ${JSON.stringify(err)}`)
  }
}

但是这个弹框太丑陋了,弹框及其小,感觉不像是个对用户展示的方式,除了这两种方式,还有其他方式吗?或者第一个弹框列表弹出后用户点击不生效的问题应该怎么解决呢?


更多关于HarmonyOS 鸿蒙Next 输入法列表弹框弹出后点选不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

有以下两种方案可以使用:

方案1. 可以使用switchInputMethod切换输入法

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inputmethod-V5#inputmethodswitchinputmethod9

方案2. 可以引导用户进入到切换输入法的设置页,让客户手动切换,代码实现参考下

import common from '@ohos.app.ability.common';

@Entry
@Component
export struct settingsItem {
  build() {
    Column() {
      Button("输入法切换")
        .onClick((event?: ClickEvent) => {
          //跳转到切换输入法设置页
          let context = getContext(this) as common.UIAbilityContext;
          context.startAbility({
            bundleName: 'com.huawei.hmos.settings',
            abilityName: 'com.huawei.hmos.settings.MainAbility',
            uri: "set_input",
          })
        })
    }
    .height("100%")
    .width("100%")
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
  }
}

更多关于HarmonyOS 鸿蒙Next 输入法列表弹框弹出后点选不起作用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


直接切换输入法,暂时没有这项能力,据了解Android和iOS也没有类似的能力。有个方案,可以引导用户进入到切换输入法的设置页,让客户手动切换,可以参考下。

import common from '@ohos.app.ability.common';

@Entry
// 设置组件
@Component
export struct settingsItem {

  build() {
    Column() {
      TextInput()
      Flex({ direction: FlexDirection.Column,
        alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
        Text("输入法切换列表").fontSize(20)
      }
    }
    .width("13%")
    .id('bindInputMethod')
    .onClick((event?: ClickEvent) => {
      //跳转到切换输入法设置页
      let context = getContext(this) as common.UIAbilityContext;
      context.startAbility({
        bundleName: 'com.huawei.hmos.settings',
        abilityName: 'com.huawei.hmos.settings.MainAbility',
        uri: "set_input",
      })
    })
  }
}

针对“HarmonyOS 鸿蒙Next 输入法列表弹框弹出后点选不起作用”的问题,可能的原因及解决方案如下:

  1. 系统Bug

    • 鸿蒙Next作为新系统,可能存在未修复的Bug。尝试更新系统到最新版本,看问题是否得到解决。
  2. 输入法兼容性问题

    • 某些输入法可能未完全适配鸿蒙Next系统。尝试更换其他输入法,看问题是否依旧存在。
  3. 权限设置

    • 检查输入法应用是否被授予了必要的权限,如悬浮窗权限等。权限不足可能导致输入法列表弹框无法正常工作。
  4. 界面响应问题

    • 可能是由于系统界面响应过慢或卡顿导致的。尝试重启手机,看是否能改善界面响应速度。
  5. 软件冲突

    • 某些已安装的应用可能与系统输入法功能存在冲突。尝试卸载最近安装的可疑应用,看问题是否有所缓解。

如果以上方法均未能解决问题,可能是更深层次的系统或硬件问题。此时,建议直接联系官网客服进行进一步的故障排查和修复。官网地址是:https://www.itying.com/category-93-b0.html 如果问题依旧没法解决请联系官网客服。

回到顶部