需要 Scripting PRO
CustomKeyboard 是 Scripting 提供的全局命名空间,用于开发 iOS 自定义键盘扩展。在 keyboard.tsx 脚本中使用该 API,可以渲染自定义键盘 UI,并访问当前输入状态、插入文本、控制光标、监听输入事件、调整高度,并在多个脚本之间导航切换。
必须在脚本项目中创建名为 keyboard.tsx 的文件;
所有 CustomKeyboard 方法 仅可在键盘扩展环境中使用;
在 App 脚本、Intent (intent.tsx)、小组件 (widget.tsx) 中无法使用此 API;
系统设置路径:
添加后,进入 Scripting 键盘详情页,开启 允许完全访问,以启用网络请求、剪贴板访问等高级功能。
present(node: VirtualNode): void用于展示自定义键盘界面。必须在 keyboard.tsx 中调用一次。
| 属性名 | 类型 | 说明 |
|---|---|---|
textBeforeCursor |
Promise<string | null> |
光标前的文本 |
textAfterCursor |
Promise<string | null> |
光标后的文本 |
selectedText |
Promise<string | null> |
当前选中的文本(如有) |
hasText |
Promise<boolean> |
输入框是否包含文本内容 |
useTraits(): TextInputTraits获取当前输入框的系统特征(如键盘类型、返回键样式等)。值在 textDidChange 和 selectionDidChange 事件中自动更新。
traits: TextInputTraits为静态快照,不会自动更新。建议在组件中使用 useTraits()。
常见字段包括:
keyboardType:如 'default', 'emailAddress', 'numberPad'returnKeyType:如 'done', 'go', 'search'textContentType:如 'username', 'password', 'oneTimeCode'keyboardAppearance:'light', 'dark' 等insertText(text: string): Promise<void>在光标处插入文本。
deleteBackward(): Promise<void>删除光标前的一个字符。
moveCursor(offset: number): Promise<void>移动光标位置。负数为向左,正数为向右。
setMarkedText(text, location, length): Promise<void>设置标记文本(用于拼音输入等组合输入)。
unmarkText(): Promise<void>取消当前标记文本。
dismiss(): Promise<void>关闭键盘。
nextKeyboard(): Promise<void>切换至系统中的下一个键盘。
requestHeight(height: number): Promise<void>请求调整键盘高度(单位为 pt)。推荐范围为 216~360pt,超出范围可能被系统忽略。
setHasDictationKey(value: boolean): Promise<void>设置是否显示语音输入按钮(麦克风图标)。
setToolbarVisible(visible: boolean): Promise<void>控制顶部工具栏的显示/隐藏。默认显示,适用于调试等场景。
dismissToHome(): Promise<void>关闭当前键盘脚本,返回 Scripting 键盘首页(脚本列表)。适用于用户在多个脚本之间自由切换的场景。
playInputClick(): void播放标准键盘按键音,建议在模拟按键操作时调用,提升交互体验。
addListener(event, callback): void注册事件监听器:
| 事件名 | 回调参数 | 说明 |
|---|---|---|
textWillChange |
() => void |
文本将要变更 |
textDidChange |
(traits: TextInputTraits) => void |
文本已变更 |
selectionWillChange |
() => void |
光标将变更 |
selectionDidChange |
(traits: TextInputTraits) => void |
光标已变更 |
removeListener(event, callback): void移除指定监听器。
removeAllListeners(event): void移除指定事件的所有监听器。
present() 并且仅调用一次;useTraits() 获取输入上下文信息;dismissToHome() 可以让用户在多个键盘脚本之间切换;playInputClick() 提升按键交互体验;hasText 是否为 true;