关于 KeyboardKit
KeyboardKit 帮助您使用 Swift 和 SwiftUI 为 iOS 和 iPadOS 构建自定义键盘扩展。它扩展了原生键盘 API,并为您提供了比其他方式更多的功能。
KeyboardKit 允许您通过几行代码创建类似于原生 iOS 键盘的键盘。这些键盘可以被高度自定义,包括更改输入键、键盘布局、设计、行为等。
KeyboardKit 还允许您使用完全自定义的视图以及库提供的功能。库的大部分功能适用于所有主要的苹果平台。
KeyboardKit 支持 iOS 14
,macOS 11
,tvOS 14
和 watchOS 7
,尽管在某些平台上某些功能不可用。
安装
可以通过 Swift 包管理器安装 KeyboardKit
https://github.com/KeyboardKit/KeyboardKit.git
您可以将库添加到主应用、键盘扩展以及其他需要它的目标。如果您不喜欢外部依赖,也可以将源代码直接复制到您的应用中。
支持的语言
KeyboardKit 在61个特定键盘的语言环境中进行了本地化(更多信息)
🇮🇸 🇮🇩 🇮🇪 🇮🇹 🇰🇿 🇹🇯 🇹🇯 🇹🇯 🇱🇻 🇱🇹
🇷🇺 🇷🇸 🇷🇸 🇸🇰 🇸🇮 🇪🇸 🇰🇪 🇸🇪 🇹🇷 🇺🇦
特点
KeyboardKit 拥有众多的特性,以帮助您构建令人惊叹且功能强大的键盘
💥 动作 - KeyboardKit 包括各种键盘动作,如字符、表情符号、自定义动作等,并提供了处理方式。🎨 外观 - KeyboardKit 拥有外观引擎,允许您对键盘进行大量样式设置。- 💡 自动完成 - KeyboardKit 可以在用户输入时进行自动完成,并展示建议。
🗯 回调 - KeyboardKit 可以在用户输入时显示输入回调,以及带有次级动作的回调。🎤 语音输入 - (BETA) KeyboardKit 可以在键盘扩展中执行语音输入。😊 表情符号 - KeyboardKit 定义了表情符号和分类,以及表情符号键盘。⌨️ 外部键盘 - KeyboardKit 允许您检测是否连接了外部键盘。👋 反馈 - KeyboardKit 键盘可以在用户输入时提供触感和振动反馈。- 👆 手势 - KeyboardKit 具有特定键盘的手势,您可以在自己的键盘中使用它们。
🔤 输入 - KeyboardKit 支持字母
、数字
、符号
以及完全定制的输入集。⌨️ 键盘 - KeyboardKit支持不同类型的键盘,提供可观察的键盘状态等。🔣 布局 - KeyboardKit支持为各种设备和地域创建键盘布局。🌐 本地化- KeyboardKit定义了具有本地化内容和资源的特定键盘地域。- 👁 预览 - KeyboardKit包含帮助在SwiftUI中预览键盘视图和组件的工具。
➡️ 代理 - KeyboardKit扩展了UITextDocumentProxy
,并使其执行更多功能。🚏 路由 - KeyboardKit允许将文本路由到主应用之外的其他目的地。- ⬅️ RTL - KeyboardKit支持右对齐(从右到左)的地域,如阿拉伯语、波斯语、库尔德语等。
⚙️ 设置 - KeyboardKit包含访问和链接到应用键盘设置的实用工具。
开始使用
在线文档有一个入门指南,可以帮助您开始使用这个库。
安装KeyboardKit后,只需import KeyboardKit
,并将您的KeyboardViewController
从继承自UIInputViewController
改为继承自KeyboardInputViewController
。
这会给您的控制器提供访问更多功能,例如新的生命周期功能、可观察的属性、键盘服务和更多。
默认的KeyboardInputViewController
行为是设置英语SystemKeyboard
键盘。实现这一功能所需的代码如下
import KeyboardKit
class KeyboardController: KeyboardInputViewController {}
当键盘视图应该创建或更新时,控制器将调用viewWillSetupKeyboard()
。您可以覆盖此函数并调用setup(with:)
来定制默认视图或设置一个完全定制的视图。
由于KeyboardKit使用纯SwiftUI,您可以使用任何自定义SwiftUI视图层次结构作为您的键盘视图。
例如,在这里我们用自定义工具栏替换了标准自动完成工具栏
class KeyboardViewController: KeyboardInputViewController {
func viewWillSetupKeyboard() {
super.viewWillSetupKeyboard()
setup { controller in
VStack(spacing: 0) {
MyCustomToolbar()
SystemKeyboard(
controller: controller,
autocompleteToolbar: .none
)
}
}
}
}
以及在这里我们使用了一个完全定制的视图,该视图需要特定于应用的控制类型
class KeyboardViewController: KeyboardInputViewController {
func viewWillSetupKeyboard() {
super.viewWillSetupKeyboard()
setup { [unowned self] in
MyCustomKeyboard(
controller: self
)
}
}
}
当你使用自定义视图时,非常重要它有一个unowned
控制器引用
struct MyCustomKeyboard: View {
@unowned var controller: KeyboardViewController
var body: some View {
...
}
}
重要提示 当你设置一个自定义视图时,它非常重要要在其中使用[unowned self] in
,否则强self
引用将导致内存泄漏,同时在视图中还有一个unowned var
!如果做不到这一点将导致内存泄漏。
文档
在线文档(https://keyboardkit.github.io/KeyboardKit/documentation/keyboardkit/)包含文章、代码示例等,可让您概述该库的各个部分,并了解它们如何相互作用。
在线文档目前针对iOS平台。要为其他平台生成文档,请打开Xcode中的包,选择模拟器,然后运行“产品/构建文档”。
KeyboardKit Pro
KeyboardKit Pro扩展了KeyboardKit,增加了专业特性,如本地化键盘和服务、自动完成、语音输入、表情皮肤、额外视图等。它允许您通过单行代码创建完全本地化的键盘。
演示应用程序
该项目包含一个演示
文件夹,其中有一个演示应用程序,可以让您尝试KeyboardKit和KeyboardKit Pro。该应用程序有一个输入文本字段,并展示如何显示键盘扩展的状态,链接到系统设置等。
演示应用程序有5个键盘扩展
英语
使用KeyboardKit,并具有具有标准英语区域的SystemKeyboard
。Unicode
使用KeyboardKit,并具有基于Unicode输入键的SystemKeyboard
。自定义
使用KeyboardKit,并具有自定义按键、布局和外观的SystemKeyboard
。Pro
使用KeyboardKit Pro,并具有所有LRT区域的SystemKeyboard
和自动完成等。ProRtl
使用KeyboardKit Pro,并具有所有RTL区域的SystemKeyboard
和自动完成等。
只需打开并运行演示应用程序,然后在系统设置中启用要尝试的键盘。请注意,要尝试某些功能(如音频和触觉反馈),您可能需要启用完整访问权限。
支持
KeyboardKit 由以下公司信任并赞助






KeyboardKit 是开源的且完全免费,但您可以在 GitHub Sponsors 赞助此项目,升级到 KeyboardKit Pro 或 联系 我进行自由职业工作、付费支持等。
联系
如果您有任何问题或想以任何方式做出贡献,欢迎联系
- 网站: keyboardkit.com
- Mastodon: @[email protected]
- Twitter: @getkeyboardkit
- E-mail: [email protected]
许可协议
KeyboardKit 在 MIT 许可协议下提供。更多信息请参见 LICENSE 文件。