В документации говорится: «Чтобы добавлять и удалять меню из строки меню с помощью системы главного меню, переопределите buildMenu(with:) в делегате вашего приложения. Чтобы создать контекстное меню с использованием контекстной системы, переопределите метод в своем представлении. контроллер."
Однако я не наблюдаю такого поведения. Весь мой код меню для создания меню находится в делегате приложения. У меня есть несколько случаев, когда я использую insertSibling(), и только один случай, когда я создаю меню с нуля:
let ZoomInCommand = UIKeyCommand(title: NSLocalizedString("Увеличить масштаб", комментарий: ""), изображение: ноль, действие: #selector(ViewController.zoomIn), ввод: «+», modifierFlags: .command) let ZoomOutCommand = UIKeyCommand(title: NSLocalizedString("Уменьшить", комментарий: ""), изображение: ноль, действие: #selector(ViewController.zoomOut), вход: "-", modifierFlags: .command) let ZoomCancelCommand = UIKeyCommand(title: NSLocalizedString("Сбросить масштаб", комментарий: ""), изображение: ноль, действие: #selector(ViewController.zoomCancel), ввод: «0», modifierFlags: .command) let ZoomMenu = UIMenu(title:"Zoom", идентификатор: UIMenu.Identifier("Zoom"), options:.displayInline, дочерние элементы: [zoomInCommand,zoomOutCommand,zoomCancelCommand]) builder.insertChild(zoomMenu, atEndOfMenu: .view) Примечание: это ZoomMenu также встроено в делегат приложения, как и другие элементы. Вот пример упомянутой мной функции insertSibling().
let saveProjectCommand = UIKeyCommand(title: NSLocalizedString("Сохранить проект", комментарий: ""), изображение: ноль, действие: #selector(ViewController.saveProjectAndShowActivityIndicator), ввод: «п», modifierFlags: .command) let saveImageCommand = UIKeyCommand(title: NSLocalizedString("Сохранить изображение", комментарий: ""), изображение: ноль, действие: #selector(ViewController.saveImageAction), ввод: «я», modifierFlags: .command) let saveSVGCommand = UIKeyCommand(title: NSLocalizedString("Сохранить файл SVG", комментарий: ""), изображение: ноль, действие: #selector(ViewController.saveSVG), ввод: «г», modifierFlags: .command) let saveMenu = UIMenu(title:"Save",идентификатор: UIMenu.Identifier(rawValue: "Save"),children: [saveProjectCommand,saveSVGCommand,saveImageCommand]) builder.insertSibling(saveMenu, beforeMenu: .close) В моем контроллере представления я использую функцию validate. Единственные элементы, которые там отображаются, — это три функции масштабирования. Кроме того, если при запуске приложения я долго нажимаю кнопку «КОМАНДА», я получаю то, что выглядит как контекстное меню с функциями масштабирования.

Учитывая документацию, поскольку я определил эту функцию масштабирования в делегате приложения, она не должна появляться здесь, в контроллере представления, но она есть. Кроме того, если появляется меню масштабирования, почему не появляется меню сохранения?