首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能强迫Mac催化剂使用我的"Toggle“UIKeyCommand快捷方式?

我怎样才能强迫Mac催化剂使用我的"Toggle“UIKeyCommand快捷方式?
EN

Stack Overflow用户
提问于 2022-06-01 05:56:47
回答 1查看 93关注 0票数 0

我有一个Mac催化剂应用程序,它的侧边栏可以通过Mac菜单显示/隐藏。这在Catalina上的效果和预期的一样。但是,在蒙特雷,菜单项工作,但键盘快捷方式被更改为系统默认。我要它使用我的输入序列,而不是系统的。

菜单项在应用程序委托中创建:

代码语言:javascript
复制
let toggleSidebar =
  UIKeyCommand(title: NSLocalizedString("Toggle Sidebar", comment: "MainMenu"),
               action: #selector(MenuCommands.toggleSidebar),
               input: "1", modifierFlags: [.command])
builder.insertChild(UIMenu(options: [.displayInline], children: [toggleSidebar]),
                           atStartOfMenu: .view)

视图控制器更新菜单项文本:

代码语言:javascript
复制
override func validate(_ command: UICommand) {
  if command.action == #selector(toggleSidebar) {
    command.title = labelForToggleSidebar()
  }
  super.validate(command)
}

如何强制使用我的UIKeyCommand快捷方式?

EN

回答 1

Stack Overflow用户

发布于 2022-06-01 05:56:47

结果是,macOS蒙特雷添加了一个标准菜单项,该菜单项调用了toggleSidebar选择器,它忽略了使用相同选择器添加附加UIKeyCommands的尝试。

我的解决方案是在添加我的命令之前删除system命令:

代码语言:javascript
复制
let toggleSidebar =
  UIKeyCommand(title: NSLocalizedString("Toggle Sidebar", comment: "MainMenu"),
               action: #selector(MenuCommands.toggleSidebar),
               input: "1", modifierFlags: [.command])
if #available(iOS 15.0, *) {
  builder.remove(menu: .sidebar)
}
builder.insertChild(UIMenu(options: [.displayInline], children: [toggleSidebar]),
                    atStartOfMenu: .view)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72457034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档