Как настроить контекстное меню PDFView?

Я использую экземпляр PDFView в моем приложении. Я хотел бы добавить свои собственные элементы в контекстное меню и удалить некоторые из них по умолчанию, которые не подходят для моего приложения.

Подходят некоторые элементы по умолчанию, поэтому в идеале я бы адаптировал существующее меню, а не создавал новое.

Когда я создаю представление PDF, не существует действующего элемента pdfView.menu, поэтому я не могу установить свой собственный делегат.

Я попытался использовать класс, унаследованный от PDFView (который объявлен как NSMenuDelegate) и переопределить menuWillOpen и menuNeedsUpdate - но мой код никогда не вызывается.

Я вижу, что PDFView смешивает текстовое поле и связанные с pdf пункты меню, в зависимости от выбора текста, в представленном контекстном меню, поэтому там, очевидно, нет фиксированного меню.

Могу ли я в любом случае перехватить это или мне просто нужно навязать свое меню?

На MacOS 10.13.

1 ответ

Решение

Подкласс PDFView и переопределить func menu(for event: NSEvent) -> NSMenu?, Вызов super и адаптировать меню.

Воплощать в жизнь func validateMenuItem(_ menuItem: NSMenuItem) -> Bool включить и отключить элементы.

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