x-keyboard-s 软键盘
软键盘高度监听、收起键盘、读取当前输入框光标/选区。函数与类型均加 x 前缀,避免与官方同名冲突。一次性 API 使用 DCloud success / fail / complete。
兼容性
| Harmony | iOS | Android | WEB | 微信小程序 |
|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 |
鸿蒙端 xGetSelectedTextRange 无法读取系统输入框选区,会走 fail 1005。
调用
ts
import {
xOnKeyboardHeightChange,
xOffKeyboardHeightChange,
xHideKeyboard,
xGetSelectedTextRange,
XHideKeyboardOptions,
XGetSelectedTextRangeOptions
} from "@/uni_modules/x-keyboard-s"
const listenId = xOnKeyboardHeightChange((res) => {
console.log(res.height)
})
xHideKeyboard({
success: (res) => {
console.log(res.errMsg)
}
} as XHideKeyboardOptions)
xGetSelectedTextRange({
success: (res) => {
console.log(res.start, res.end)
},
fail: (err) => {
console.log(err.errCode, err.errMsg)
}
} as XGetSelectedTextRangeOptions)
xOffKeyboardHeightChange(listenId)方法
| 名称 | 说明 |
|---|---|
| xOnKeyboardHeightChange | 监听键盘高度变化,返回监听 id |
| xOffKeyboardHeightChange | 移除监听;不传 id 则移除本插件全部监听 |
| xHideKeyboard | 收起软键盘 |
| xGetSelectedTextRange | 读取当前获焦输入框的光标/选区,仅 focus 时有效 |
结果
XKeyboardHeightChangeResult.height 为逻辑像素,收起时为 0。
XGetSelectedTextRangeResult:start / end 为字符下标。
错误码:1001 系统错误,1002 参数错误,1005 当前没有获焦的输入框,1008 当前平台不支持。
平台差异
Android
- 高度:根视图
OnGlobalLayoutListener+ 可视区域差值,再除以 density。 - 收起:
InputMethodManager.hideSoftInputFromWindow。 - 选区:当前 focus 的
TextView/EditText。
iOS
- 高度:
keyboardWillChangeFrame。 - 收起:
endEditing。 - 选区:当前 first responder 的
UITextInput。
HarmonyOS
- 高度:
window.on('keyboardHeightChange'),px 转 vp。 - 收起:
inputMethod.getController().hideSoftKeyboard/stopInputSession。 - 选区:无全局可读选区,
fail 1005。
Web
- 高度:
visualViewport与window.innerHeight差值。 - 收起:
document.activeElement.blur()。 - 选区:当前
input/textarea的selectionStart/selectionEnd。
微信小程序
- 直接转发
wx.onKeyboardHeightChange/wx.offKeyboardHeightChange/wx.hideKeyboard/wx.getSelectedTextRange。
版本
版权归 https://xui.tmui.design 你不得修改及二次开发,仅供 TMUI4 会员商用使用。不得转给非 VIP 会员使用,一经查实数倍赔偿,并追究法律责任。
更新日志
1.0.0(2026-08-16)
- 新增 x-keyboard-s:xOnKeyboardHeightChange、xOffKeyboardHeightChange、xHideKeyboard、xGetSelectedTextRange。
