将全面的硬件键盘控制添加到 iPad、iPhone 或 Mac Catalyst 应用的最简单方法。
键盘控制是 Mac 应用的标准期望。它在 iOS 上也很重要,因为硬件键盘可以提高速度和人体工程学,这使得 iPad 成为一台更强大的生产力机器。
KeyboardKit 旨在在可用时与 UIKit 焦点系统集成(iOS 15+ 的 iPad,macOS 11+),并在焦点系统不可用的操作系统版本(iPhone,iOS 13–14 的 iPad,macOS 10.15)上提供类似的箭头和 Tab 键导航。
需要 Xcode 14.1 或更高版本。KeyboardKit 支持 iPad 和 iPhone 上的 iOS 13 及更高版本,以及使用 Mac Catalyst 的 macOS 11 及更高版本(缩放和优化)。不支持 tvOS。该框架可以为 visionOS 构建,但尚未在此平台上进行测试。
将 KeyboardKit 作为包依赖项添加到现有 Xcode 项目
KeyboardKit.xcodeproj
拖到您的 Xcode 项目中。KeyboardKit.framework
作为嵌入式框架添加到您的目标。Swift Package Manager 要求将 Swift 和 Objective-C 源代码分隔到不同的模块中。 KeyboardKitObjC
模块在 KeyboardKit 内部使用,您的应用程序无需显式导入。
直到 8.2.0 版本,KeyboardKit 可以在 CocoaPods 上使用,名称为 Keyboard-Kit
。 请改用 Swift Package Manager 或直接安装。
导入框架
import KeyboardKit
不要直接创建或子类化 UIKit 类,而是使用 KeyboardKit 中的子类。所有 KeyboardKit 子类都通过将 UI
更改为 Keyboard
来命名。例如,替换
class SettingsViewController: UICollectionViewController {
...
}
为
class SettingsViewController: KeyboardCollectionViewController {
...
}
或直接创建 KeyboardKit 子类
let tabBarController = KeyboardTabBarController()
tabBarController.viewControllers = [
KeyboardNavigationController(rootViewController: SettingsViewController()),
]
为了接收按键命令,对象必须在响应链上。
您可以在 KeyboardKitDemo 应用程序中看到更多信息,每个类都包含其 Swift 源文件中的 API 文档。
在 Button
上使用 .keyboardShortcut
修饰符时,访问 .KeyboardKit
命名空间中用于常见操作的语义定义的 KeyboardShortcut
。
Button("Save") {
// Save something here in the button action
}
.keyboardShortcut(.KeyboardKit.save)
这增加了通过按 ⌘S 触发按钮动作的能力。
KeyboardKit 是 Douglas Hill 的项目,并得到了 贡献者的慷慨帮助。 一些概念最初是为 PSPDFKit 开发的,并在 Swift 中为 KeyboardKit 重新实现。 我在我的阅读应用程序中使用 KeyboardKit。
我很乐意获得关于此项目的帮助。 对于小的更改,请打开一个 Pull Request; 对于较大的更改,请先打开一个 Issue以讨论您希望看到的内容。
新功能不需要测试,但修复的回归应该有自动化测试。 使用 KeyboardKitTests
进行不需要视图或响应链的单元测试。 使用 KeyboardKitDemoUITests
进行可以在演示应用程序中重现的集成测试。 这目前仅适用于 Mac Catalyst,因为 iOS 不允许模拟硬件键盘输入。 对于介于两者之间的任何测试用例,请使用 KeyboardKitUITests
,这可能适用于大多数情况。
MIT 许可证 — 请参阅 License.txt