Строка меню UIMenuBuilder и контекстное меню

В документации говорится: «Чтобы добавлять и удалять меню из строки меню с помощью системы главного меню, переопределите buildMenu(with:) в делегате вашего приложения. Чтобы создать контекстное меню с использованием контекстной системы, переопределите метод в контроллере представления».

Однако я не наблюдаю такого поведения. Весь мой код меню для создания меню находится в делегате приложения. У меня есть несколько случаев, когда я использую, и только один случай, когда я создаю меню с нуля:

              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)

В моем контроллере представления я используюvalidateфункция. Единственные элементы, которые там отображаются, — это три функции масштабирования. Кроме того, если при запуске приложения я долго нажимаю кнопку «КОМАНДА», я получаю то, что выглядит как контекстное меню с функциями масштабирования. Учитывая документацию, поскольку я определил эту функцию масштабирования в делегате приложения, она не должна появляться здесь, в контроллере представления, но она есть. Кроме того, если появляется меню масштабирования, почему не появляется меню сохранения?

0 ответов

Другие вопросы по тегам