HarmonyOS 输入法键盘显隐监听问题:sendKeyboardStatus
在对输入法,软键盘状态进行监听时,sendKeyboardStatus。发现点击键盘自带的下拉按键,导致inputMethodController.on("sendKeyboardStatus")这个监听丢失,不再有显示、隐藏的回调。
复现步骤:(运行下面的示例代码)
1、正常情况:”点击显示输入法键盘“按钮,唤起键盘,toast键盘显示;”点击隐藏输入法键盘“按钮,toast键盘隐藏。可以重复点击多少,每次都有监听回调,没有问题。
2、异常情况:”点击显示输入法键盘“按钮,唤起键盘,toast键盘显示;点击键盘自带的下拉按键(键盘表情旁边的下拉箭头),toast键盘隐藏。之后无论再怎么点击显示或隐藏键盘,都没有toast提示了。疑似sendKeyboardStatus监听被off掉了。请问该如何处理并解决这个问题?或者有没有其他方式监听键盘的显示和隐藏状态。
示例代码如下:
import { inputMethod } from '@kit.IMEKit';
import { promptAction } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct TextInputPage {
@State isShow: boolean = false;
inputMethodController = inputMethod.getController();
aboutToAppear(): void {
let textConfig: inputMethod.TextConfig = {
inputAttribute: {
textInputType: 0,
enterKeyType: 1
}
};
this.inputMethodController.attach(false, textConfig, (err: BusinessError) => {
if (err) {
console.error(`Failed to attach: ${JSON.stringify(err)}`);
return;
}
console.log('Succeeded in attaching the inputMethod.');
this.inputMethodController.on("sendKeyboardStatus", (keyboardStatus: inputMethod.KeyboardStatus) => {
if (keyboardStatus === inputMethod.KeyboardStatus.HIDE) {
console.log('inputMethod.KeyboardStatus.HIDE.');
promptAction.showToast({ message: "键盘隐藏" })
} else if (keyboardStatus === inputMethod.KeyboardStatus.SHOW) {
console.log('inputMethod.KeyboardStatus.SHOW.');
promptAction.showToast({ message: "键盘显示" })
}
})
});
}
build() {
Stack({ alignContent: Alignment.Bottom }) {
RelativeContainer() {
Button("点击隐藏输入法键盘")
.id('text')
.alignRules({
left: { anchor: '__container__', align: HorizontalAlign.Start },
right: { anchor: '__container__', align: HorizontalAlign.End },
top: { anchor: '__container__', align: VerticalAlign.Top }
})
.onClick(() => {
this.isShow = false
this.inputMethodController.hideTextInput()
})
Button("点击显示输入法键盘")
.id('btn')
.alignRules({
left: { anchor: '__container__', align: HorizontalAlign.Start },
right: { anchor: '__container__', align: HorizontalAlign.End },
bottom: { anchor: '__container__', align: VerticalAlign.Bottom }
})
.onClick(() => {
this.isShow = true
this.inputMethodController.showTextInput()
})
}
.expandSafeArea([SafeAreaType.KEYBOARD])
.height('100%')
.width('100%')
TextInput({ placeholder: "请输入。。。" })
.id('TextInputPageHelloWorld')
.fontSize(15)
.fontWeight(FontWeight.Bold)
.height('auto')
.expandSafeArea([SafeAreaType.KEYBOARD], [SafeAreaEdge.TOP])
.visibility(this.isShow ? Visibility.Visible : Visibility.None)
}
.height('100%')
.width('100%')
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS 如何监听输入法键盘的del键。
993浏览 • 1回复 待解决
小程序输入法键盘光标问题
1308浏览 • 1回复 待解决
HarmonyOS 输入法监听不到键盘拉起和隐藏事件
689浏览 • 1回复 待解决
如何监听输入法软键盘显示或隐藏事件
836浏览 • 1回复 待解决
HarmonyOS如何监听输入法显示隐藏
1506浏览 • 1回复 待解决
HarmonyOS 输入法键盘按键的按压效果?
1148浏览 • 2回复 待解决
HarmonyOS 自带输入法的输入问题
1123浏览 • 1回复 待解决
如何监听输入法输入内容的变化?
1308浏览 • 1回复 待解决
HarmonyOS 如何分别打开英文输入法和中文输入法
982浏览 • 1回复 待解决
HarmonyOS TextInput输入框焦点和输入法问题
888浏览 • 2回复 待解决
HarmonyOS如何监听输入法右上角关闭按键
1242浏览 • 1回复 待解决
HarmonyOS 输入法光标控制
1116浏览 • 1回复 待解决
HarmonyOS 能否自定义输入法,现在只能用官方的输入法
805浏览 • 1回复 待解决
HarmonyOS customKeyboard切换系统输入法的问题
1265浏览 • 1回复 待解决
HarmonyOS 调起输入法后qt无法通过native接口获取键盘事件
779浏览 • 1回复 待解决
如何取消订阅输入法软键盘显示或隐藏事件
1053浏览 • 1回复 待解决
有输入法编程接口吗?
5595浏览 • 1回复 待解决
TextInput组件弹起输入法,有参数可以设置将输入框顶起到输入法上面吗?
3285浏览 • 1回复 待解决
HarmonyOS 显示输入法时,底部列表同时滚动问题
602浏览 • 1回复 待解决
HarmonyOS 输入框有事件监听显隐吗,以及获取对应高度的方法
540浏览 • 1回复 待解决
HarmonyOS 本地模拟器怎么使用输入法
838浏览 • 1回复 待解决
HarmonyOS 如何跳转到系统输入法设置界面
1063浏览 • 1回复 待解决
HarmonyOS 输入法顶起bindSheet调起的底部弹窗
704浏览 • 1回复 待解决
HarmonyOS 输入法的高度是如何确定的?
1387浏览 • 1回复 待解决
InputMethodController.on('sendKeyboardStatus')无法监听键盘的显示隐藏事件
1046浏览 • 1回复 待解决
可使用window.on(‘keyboardHeightChange’)监听键盘高度,判断软键盘的显示与隐藏。文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#onkeyboardheightchange7