如何在Mac Catalyst应用中使用UIMenuBuilder添加菜单栏新菜单?
使用UIMenuBuilder可在iPadOS上构建类似macOS的传统菜单栏:既可为Edit等系统标准菜单添加带快捷键的命令,也能创建自定义菜单并插入到现有菜单之后。该逻辑在iPadOS上完全正常,但在Mac Catalyst应用中存在限制——仅能为Edit菜单添加菜单项,自定义菜单无法在macOS菜单栏中显示。
当前实现情况:
- 已为Edit菜单添加Search选项,该功能在iPadOS和macOS上均可正常触发
- 在Edit菜单后添加了包含Favorite选项的Image菜单,此菜单在iPadOS上正常显示,但在macOS菜单栏中缺失
实现代码
override func buildMenu(with builder: UIMenuBuilder) { super.buildMenu(with: builder) guard builder.system == .main else { return } let editMenu = UIMenu(options: .displayInline, children: [ UIKeyCommand(title: "Search", action: #selector(search), input: "F", modifierFlags: .command) ]) builder.insertChild(editMenu, atStartOfMenu: .edit) let imageMenu = UIMenu(title: "Image", options: .displayInline, children: [ UIKeyCommand(title: "Favorite", action: #selector(toggleFavorite), input: ".") ]) builder.insertSibling(imageMenu, afterMenu: .edit) } @objc func search() { print("search") } @objc func toggleFavorite() { print("favorite") }
效果截图
- iPadOS显示效果:

- macOS显示效果:

内容的提问来源于stack exchange,提问作者Jordan H
相关产品推荐
相关产品推荐

