@capacitor/keyboard
键盘 API 提供了键盘显示和可见性控制,以及在键盘显示和隐藏时跟踪事件。
安装
npm install @capacitor/keyboard
npx cap sync
示例
import { Keyboard } from '@capacitor/keyboard';
Keyboard.addListener('keyboardWillShow', info => {
console.log('keyboard will show with height:', info.keyboardHeight);
});
Keyboard.addListener('keyboardDidShow', info => {
console.log('keyboard did show with height:', info.keyboardHeight);
});
Keyboard.addListener('keyboardWillHide', () => {
console.log('keyboard will hide');
});
Keyboard.addListener('keyboardDidHide', () => {
console.log('keyboard did hide');
});
配置
在 iOS 上,可以使用以下选项配置键盘
属性 | 类型 | 描述 | 默认值 | 自 |
---|---|---|---|---|
resize | KeyboardResize | 配置键盘出现时应用程序调整大小的方式。仅适用于 iOS。 | 原生 | 1.0.0 |
style | KeyboardStyle | 如果您的应用程序不支持深色/浅色主题更改,则覆盖键盘样式。如果没有设置,键盘样式将取决于设备的外观。仅适用于 iOS。 | 1.0.0 | |
resizeOnFullScreen | 布尔值 | Android 中存在一个错误,该错误会阻止键盘在应用程序处于全屏模式时调整 WebView 大小(即如果 StatusBar 插件用于覆盖状态栏)。此设置如果设置为 true,则添加一个解决方法,即使应用程序处于全屏模式,也会调整 WebView 大小。仅适用于 Android | 1.1.0 |
示例
在 capacitor.config.json
中
{
"plugins": {
"Keyboard": {
"resize": "body",
"style": "DARK",
"resizeOnFullScreen": true
}
}
}
在 capacitor.config.ts
中
/// <reference types="@capacitor/keyboard" />
import { CapacitorConfig } from '@capacitor/cli';
import { KeyboardResize, KeyboardStyle } from '@capacitor/keyboard';
const config: CapacitorConfig = {
plugins: {
Keyboard: {
resize: KeyboardResize.Body,
style: KeyboardStyle.Dark,
resizeOnFullScreen: true,
},
},
};
export default config;
与 cordova-plugin-ionic-keyboard
的兼容性
为了保持与 cordova-plugin-ionic-keyboard
的兼容性,以下事件也适用于 window.addEventListener
keyboardWillShow
keyboardDidShow
keyboardWillHide
keyboardDidHide
API
show()
show() => Promise<void>
显示键盘。此方法为 alpha 版,可能存在问题。
此方法仅在 Android 上受支持。
自 1.0.0
hide()
hide() => Promise<void>
隐藏键盘。
自 1.0.0
setAccessoryBarVisible(...)
setAccessoryBarVisible(options: { isVisible: boolean; }) => Promise<void>
设置键盘上的辅助栏是否可见。建议为简短表单(登录、注册等)禁用辅助栏,以提供更简洁的 UI。
此方法仅在 iPhone 设备上受支持。
参数 | 类型 |
---|---|
options | { isVisible: boolean; } |
自 1.0.0
setScroll(...)
setScroll(options: { isDisabled: boolean; }) => Promise<void>
以编程方式启用或禁用 WebView 滚动。
此方法仅在 iOS 上受支持。
参数 | 类型 |
---|---|
options | { isDisabled: boolean; } |
自 1.0.0
setStyle(...)
setStyle(options: KeyboardStyleOptions) => Promise<void>
以编程方式设置键盘样式。
此方法仅在 iOS 上受支持。
参数 | 类型 |
---|---|
options | KeyboardStyleOptions |
自 1.0.0
setResizeMode(...)
setResizeMode(options: KeyboardResizeOptions) => Promise<void>
以编程方式设置调整大小模式。
此方法仅在 iOS 上受支持。
参数 | 类型 |
---|---|
options | KeyboardResizeOptions |
自 1.0.0
getResizeMode()
getResizeMode() => Promise<KeyboardResizeOptions>
获取当前设置的调整大小模式。
此方法仅在 iOS 上受支持。
**返回:** Promise<KeyboardResizeOptions>
自 4.0.0
addListener('keyboardWillShow', ...)
addListener(eventName: 'keyboardWillShow', listenerFunc: (info: KeyboardInfo) => void) => Promise<PluginListenerHandle>
监听键盘即将显示时。
在 Android 上,keyboardWillShow 和 keyboardDidShow 几乎同时触发。
参数 | 类型 |
---|---|
eventName | 'keyboardWillShow' |
listenerFunc | (info: KeyboardInfo) => void |
**返回:** Promise<PluginListenerHandle>
自 1.0.0
addListener('keyboardDidShow', ...)
addListener(eventName: 'keyboardDidShow', listenerFunc: (info: KeyboardInfo) => void) => Promise<PluginListenerHandle>
监听键盘显示时。
在 Android 上,keyboardWillShow 和 keyboardDidShow 几乎同时触发。
参数 | 类型 |
---|---|
eventName | 'keyboardDidShow' |
listenerFunc | (info: KeyboardInfo) => void |
**返回:** Promise<PluginListenerHandle>
自 1.0.0
addListener('keyboardWillHide', ...)
addListener(eventName: 'keyboardWillHide', listenerFunc: () => void) => Promise<PluginListenerHandle>
监听键盘即将隐藏时。
在 Android 上,keyboardWillHide 和 keyboardDidHide 几乎同时触发。
参数 | 类型 |
---|---|
eventName | 'keyboardWillHide' |
listenerFunc | () => void |
**返回:** Promise<PluginListenerHandle>
自 1.0.0
addListener('keyboardDidHide', ...)
addListener(eventName: 'keyboardDidHide', listenerFunc: () => void) => Promise<PluginListenerHandle>
监听键盘隐藏时。
在 Android 上,keyboardWillHide 和 keyboardDidHide 几乎同时触发。
参数 | 类型 |
---|---|
eventName | 'keyboardDidHide' |
listenerFunc | () => void |
**返回:** Promise<PluginListenerHandle>
自 1.0.0
removeAllListeners()
removeAllListeners() => Promise<void>
删除此插件的所有原生监听器。
自 1.0.0
接口
KeyboardStyleOptions
属性 | 类型 | 描述 | 默认值 | 自 |
---|---|---|---|---|
style | KeyboardStyle | 键盘的样式。 | KeyboardStyle.Default | 1.0.0 |
KeyboardResizeOptions
属性 | 类型 | 描述 | 自 |
---|---|---|---|
mode | KeyboardResize | 键盘出现时用于调整元素大小的模式。 | 1.0.0 |
PluginListenerHandle
属性 | 类型 |
---|---|
remove | () => Promise<void> |
KeyboardInfo
属性 | 类型 | 描述 | 自 |
---|---|---|---|
keyboardHeight | 数字 | 键盘的高度。 | 1.0.0 |
枚举
KeyboardStyle
成员 | 值 | 描述 | 自 |
---|---|---|---|
Dark | 'DARK' | 深色键盘。 | 1.0.0 |
Light | 'LIGHT' | 浅色键盘。 | 1.0.0 |
默认值 | 'DEFAULT' | 在 iOS 13 及更高版本上,键盘样式基于设备的外观。如果设备使用深色模式,键盘将为深色。如果设备使用浅色模式,键盘将为浅色。在 iOS 12 上,键盘将为浅色。 | 1.0.0 |
KeyboardResize
成员 | 值 | 描述 | 自 |
---|---|---|---|
Body | 'body' | 仅调整 body HTML 元素的大小。相对单位不受影响,因为视口没有改变。 | 1.0.0 |
Ionic | 'ionic' | 仅调整 ion-app HTML 元素的大小。仅用于 Ionic Framework 应用程序。 | 1.0.0 |
Native | 'native' | 键盘显示/隐藏时,整个原生 Web View 将调整大小。这会影响 vh 相对单位。 | 1.0.0 |
None | 'none' | 应用程序和 Web View 均不调整大小。 | 1.0.0 |