You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS/Catalyst如何实现键盘快捷键自定义分组功能

自定义iOS应用快捷键分组功能说明

iOS 15及以上版本完全支持自定义应用的键盘快捷键分组展示,不需要依赖私有API,直接使用系统提供的公开接口即可实现。

具体实现步骤
  • 创建UIKeyCommandGroup对象(iOS 15新增的公开类),每个对象对应一个快捷键分组,可通过title参数指定分组名称,children参数传入该分组下所有的UIKeyCommand实例
  • 重写对应视图控制器的keyCommands属性的Getter方法,直接返回包含UIKeyCommandGroup对象的数组即可,系统会自动识别分组并在长按CMD弹出的列表中按分组渲染
  • 可选操作:如果需要多层级分组,可以将子UIKeyCommandGroup作为父分组的children元素传入,系统支持最多3层嵌套展示
完整实现示例
// 声明单个快捷键实例
private let copyCommand = UIKeyCommand(
    title: "复制内容",
    action: #selector(copyAction),
    input: "c",
    modifierFlags: .command
)
private let pasteCommand = UIKeyCommand(
    title: "粘贴内容",
    action: #selector(pasteAction),
    input: "v",
    modifierFlags: .command
)
private let backCommand = UIKeyCommand(
    title: "返回上页",
    action: #selector(backAction),
    input: UIKeyCommand.inputEscape,
    modifierFlags: []
)

// 重写keyCommands属性返回带分组的快捷键列表
override var keyCommands: [UIKeyCommand]? {
    // 兼容iOS15以下版本,直接返回单个快捷键数组
    guard #available(iOS 15.0, *) else {
        return [copyCommand, pasteCommand, backCommand]
    }

    // 构建编辑操作分组
    let editGroup = UIKeyCommandGroup(
        title: "编辑操作",
        children: [copyCommand, pasteCommand]
    )
    // 构建导航操作分组
    let navGroup = UIKeyCommandGroup(
        title: "导航操作",
        children: [backCommand]
    )

    // 返回分组数组,系统会自动解析分组
    return [editGroup, navGroup]
}

// 快捷键对应的触发方法
@objc private func copyAction() {
    // 复制逻辑
}
@objc private func pasteAction() {
    // 粘贴逻辑
}
@objc private func backAction() {
    // 返回逻辑
}
注意事项
  • 所有需要在快捷键列表中展示的UIKeyCommand必须显式设置title属性,否则不会在弹窗中显示
  • 系统自带的System分组是全局默认展示的,不需要开发者手动添加
  • 分组的排序和你在keyCommands数组中返回的顺序一致,系统不会主动调整排序

内容的提问来源于stack exchange,提问作者Kaven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:42:04