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%')
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 如何监听输入法键盘的del键。
275浏览 • 1回复 待解决
小程序输入法键盘光标问题
528浏览 • 1回复 待解决
HarmonyOS 输入法监听不到键盘拉起和隐藏事件
35浏览 • 1回复 待解决
如何监听输入法软键盘显示或隐藏事件
494浏览 • 1回复 待解决
HarmonyOS如何监听输入法显示隐藏
788浏览 • 1回复 待解决
HarmonyOS 输入法键盘按键的按压效果?
431浏览 • 2回复 待解决
HarmonyOS 自带输入法的输入问题
287浏览 • 1回复 待解决
如何监听输入法输入内容的变化?
584浏览 • 1回复 待解决
HarmonyOS 如何分别打开英文输入法和中文输入法
126浏览 • 1回复 待解决
HarmonyOS如何监听输入法右上角关闭按键
585浏览 • 1回复 待解决
HarmonyOS TextInput输入框焦点和输入法问题
96浏览 • 1回复 待解决
HarmonyOS 输入法光标控制
312浏览 • 1回复 待解决
HarmonyOS 能否自定义输入法,现在只能用官方的输入法
250浏览 • 1回复 待解决
HarmonyOS customKeyboard切换系统输入法的问题
510浏览 • 1回复 待解决
HarmonyOS 调起输入法后qt无法通过native接口获取键盘事件
148浏览 • 1回复 待解决
如何取消订阅输入法软键盘显示或隐藏事件
444浏览 • 1回复 待解决
有输入法编程接口吗?
4919浏览 • 1回复 待解决
TextInput组件弹起输入法,有参数可以设置将输入框顶起到输入法上面吗?
2274浏览 • 1回复 待解决
HarmonyOS 显示输入法时,底部列表同时滚动问题
133浏览 • 1回复 待解决
HarmonyOS 输入框有事件监听显隐吗,以及获取对应高度的方法
25浏览 • 1回复 待解决
HarmonyOS 本地模拟器怎么使用输入法
188浏览 • 1回复 待解决
HarmonyOS 如何跳转到系统输入法设置界面
314浏览 • 1回复 待解决
HarmonyOS 输入法顶起bindSheet调起的底部弹窗
128浏览 • 1回复 待解决
HarmonyOS 输入法的高度是如何确定的?
535浏览 • 1回复 待解决
InputMethodController.on('sendKeyboardStatus')无法监听键盘的显示隐藏事件
405浏览 • 1回复 待解决
可使用window.on(‘keyboardHeightChange’)监听键盘高度,判断软键盘的显示与隐藏。文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#onkeyboardheightchange7