KeyboardKit
为 iPad、iPhone 或 Mac Catalyst 应用程序添加全面硬件键盘控制的最简单方法。
键盘控制是 Mac 应用的标准预期。在 iOS 上也很重要,因为硬件键盘可以提升速度和人体工程学,使 iPad 成为一个更强大的生产力设备。
KeyboardKit 在可用时设计用于与 UIKit 焦点系统集成,并在焦点系统不可用的操作系统版本中提供类似的箭头和制表键导航。
特性
- 无需焦点系统进行键盘导航(使用箭头键和制表键导航)
- 附加导航命令(取消模态,更改选项卡,后退)
- 集合视图和表格视图命令(重新排序,删除,全选)
- 键盘滚动和缩放(包括页面向上,页面向下,首行,末行 — 以及地图视图)
- 按钮的键等效项(SwiftUI 按钮,UIKit 工具栏项目)
- 高级文本导航(查找下一个/上一个,定义)
- 键盘窗口管理(打开,关闭,循环)
- 键盘日期选择器(更改日期,星期,月份或年份)
- 主菜单和可发现性辅助界面(在文件,编辑,视图等下分组命令)
- 在 39 种本地化中提供可发现性标题
要求
需要 Xcode 14.1 或更高版本。KeyboardKit 支持从 iOS 13 开始的 iPad、iPhone 和 Mac Catalyst(均为缩放和优化版)。不支持 tvOS。
Swift和Objective-C的应用程序都受到支持。由于KeyboardKit是用Swift实现的,因此无法从Objective-C中继承KeyboardKit类。但是,KeyboardKit的所有其他功能都对Objective-C应用程序可用。
安装
使用Swift包管理器
将KeyboardKit作为一个包依赖项添加到现有的Xcode项目中
- 从文件菜单中选择Swift Packages › 添加包依赖项…
- 在包仓库URL文本框中输入 "https://github.com/douglashill/KeyboardKit"。
直接
- 克隆此仓库。
- 将
KeyboardKit.xcodeproj
拖放到您的Xcode项目中。 - 将KeyboardKit目标作为您的目标的依赖项添加。
- 将
KeyboardKit.framework
作为嵌入式框架添加。
Swift包管理器要求将Swift和Objective-C源代码分别整理到模块中。《KeyboardKitObjC》模块在内部由KeyboardKit使用,并且不需要您的应用程序显式导入。
CocoaPods
KeyboardKit在CocoaPods上可用,代码为Keyboard-Kit
。
如果您发现任何集成问题,请发起一个pull请求。
用法
导入框架
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 触发按钮操作的能力。
定制
公共 API 目前保持最小化,以便组件易于嵌入。如果您想在 KeyboardKit 中定制某些内容,请 提交问题 进行讨论。您还可以考虑直接集成源代码并根据需要修改它。
了解更多
- 会议演讲:在 iOS Conf SG 2020 上的UIKit 应用中的键盘控制
- 播客讨论:在 iPhreaks 第 297 集
- 博客文章:在 iOS 上KeyboardKit 的最新功能
- 变更日志
致谢
KeyboardKit 是一个由 Douglas Hill 开发的项目,得到以下贡献者的鼎力相助:贡献者列表。一些概念最初是为 PSPDFKit 开发的,并在 KeyboardKit 中用 Swift 重新实现。我在我的 阅读应用 中使用了 KeyboardKit。
贡献
我很乐意在这项项目中获得帮助。对于小改动,请提出 Pull Request,对于较大的更改,请先在Issues 中讨论您希望看到的内容。
对于新功能不需要测试,但对回归问题应进行自动测试。使用 KeyboardKitTests
进行单元测试(不需要视图或响应链)。使用 KeyboardKitDemoUITests
进行集成测试,这些测试可以在演示应用中重现。这仅限于 Mac Catalyst,因为 iOS 不允许模拟硬件键盘输入。使用 KeyboardKitUITests
进行任何其他测试案例,这可能是大多数情况。
许可证
MIT 许可证 - 查看 License.txt