KeyboardKit

将全面的硬件键盘控制添加到 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 构建,但尚未在此平台上进行测试。

安装

Swift Package Manager

将 KeyboardKit 作为包依赖项添加到现有 Xcode 项目

  1. 导航到您的项目设置,然后导航到“Package Dependencies”选项卡。
  2. 单击“+”按钮。
  3. 在搜索或包 URL 字段中输入 https://github.com/douglashill/KeyboardKit

直接安装

  1. 克隆此存储库。
  2. KeyboardKit.xcodeproj 拖到您的 Xcode 项目中。
  3. 将 KeyboardKit 目标添加为您的目标的依赖项。
  4. KeyboardKit.framework 作为嵌入式框架添加到您的目标。

Swift Package Manager 要求将 Swift 和 Objective-C 源代码分隔到不同的模块中。 KeyboardKitObjC 模块在 KeyboardKit 内部使用,您的应用程序无需显式导入。

CocoaPods (旧版)

直到 8.2.0 版本,KeyboardKit 可以在 CocoaPods 上使用,名称为 Keyboard-Kit。 请改用 Swift Package Manager 或直接安装。

用法

导入框架

import KeyboardKit

UIKit

不要直接创建或子类化 UIKit 类,而是使用 KeyboardKit 中的子类。所有 KeyboardKit 子类都通过将 UI 更改为 Keyboard 来命名。例如,替换

class SettingsViewController: UICollectionViewController {
    ...
}

class SettingsViewController: KeyboardCollectionViewController {
    ...
}

或直接创建 KeyboardKit 子类

let tabBarController = KeyboardTabBarController()
tabBarController.viewControllers = [
    KeyboardNavigationController(rootViewController: SettingsViewController()),
]

为了接收按键命令,对象必须在响应链上。

您可以在 KeyboardKitDemo 应用程序中看到更多信息,每个类都包含其 Swift 源文件中的 API 文档。

SwiftUI

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