我有一个Mac催化剂应用程序,它的侧边栏可以通过Mac菜单显示/隐藏。这在Catalina上的效果和预期的一样。但是,在蒙特雷,菜单项工作,但键盘快捷方式被更改为系统默认。我要它使用我的输入序列,而不是系统的。
菜单项在应用程序委托中创建:
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)视图控制器更新菜单项文本:
override func validate(_ command: UICommand) {
if command.action == #selector(toggleSidebar) {
command.title = labelForToggleSidebar()
}
super.validate(command)
}如何强制使用我的UIKeyCommand快捷方式?
发布于 2022-06-01 05:56:47
结果是,macOS蒙特雷添加了一个标准菜单项,该菜单项调用了toggleSidebar选择器,它忽略了使用相同选择器添加附加UIKeyCommands的尝试。
我的解决方案是在添加我的命令之前删除system命令:
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)https://stackoverflow.com/questions/72457034
复制相似问题