提问人:Victor Engel 提问时间:9/29/2023 更新时间:9/29/2023 访问量:31
UIMenuBuilder 菜单栏与上下文菜单
UIMenuBuilder menu bar vs. context menu
问:
文档说,“要使用主菜单系统在菜单栏中添加和删除菜单,请在应用程序委托中覆盖 buildMenu(with:)。要使用上下文系统构建上下文菜单,请在视图控制器中重写该方法。
但是,我没有看到这种行为。我所有用于构建菜单的菜单代码都在应用程序委托中。我有多个实例使用,只有一种情况是我从头开始构建菜单:insertSibling()
let zoomInCommand = UIKeyCommand(title: NSLocalizedString("Zoom In", comment: ""),
image: nil,
action: #selector(ViewController.zoomIn),
input: "+",
modifierFlags: .command)
let zoomOutCommand = UIKeyCommand(title: NSLocalizedString("Zoom Out", comment: ""),
image: nil,
action: #selector(ViewController.zoomOut),
input: "-",
modifierFlags: .command)
let zoomCancelCommand = UIKeyCommand(title: NSLocalizedString("Reset Zoom", comment: ""),
image: nil,
action: #selector(ViewController.zoomCancel),
input: "0",
modifierFlags: .command)
let zoomMenu = UIMenu(title:"Zoom", identifier: UIMenu.Identifier("Zoom"), options:.displayInline ,children: [zoomInCommand,zoomOutCommand,zoomCancelCommand])
builder.insertChild(zoomMenu, atEndOfMenu: .view)
注意:此 zoomMenu 也内置在应用程序委托中,就像其他项目一样。这是我提到的函数的示例。insertSibling()
let saveProjectCommand = UIKeyCommand(title: NSLocalizedString("Save Project", comment: ""),
image: nil,
action: #selector(ViewController.saveProjectAndShowActivityIndicator),
input: "p",
modifierFlags: .command)
let saveImageCommand = UIKeyCommand(title: NSLocalizedString("Save Image", comment: ""),
image: nil,
action: #selector(ViewController.saveImageAction),
input: "i",
modifierFlags: .command)
let saveSVGCommand = UIKeyCommand(title: NSLocalizedString("Save SVG File", comment: ""),
image: nil,
action: #selector(ViewController.saveSVG),
input: "g",
modifierFlags: .command)
let saveMenu = UIMenu(title:"Save",identifier: UIMenu.Identifier(rawValue: "Save"),children: [saveProjectCommand,saveSVGCommand,saveImageCommand])
builder.insertSibling(saveMenu, beforeMenu: .close)
在我的视图控制器中,我使用该函数。那里显示的唯一项目是三个缩放功能。此外,在运行应用程序时,如果我长按 COMMAND 按钮,我会得到一个带有缩放功能的上下文菜单。根据文档,由于我在应用程序委托中定义了缩放函数,因此它不应该出现在视图控制器中,但它确实如此。另外,如果出现缩放菜单,为什么不显示保存菜单?validate
答: 暂无答案
评论