如何自定义 PDFView 的上下文菜单?

Gil*_*les 4 cocoa pdfview swift

我在我的应用程序中使用 PDFView 实例。我想将我自己的项目添加到上下文菜单中,并删除一些不适合我的应用程序的默认项目。

一些默认项目是合适的,因此理想情况下我会调整现有菜单而不是构建新菜单。

当我创建 pdf 视图时,不存在有效的 pdfView.menu 项,因此我无法设置自己的委托。

我尝试使用继承自 PDFView 的类(声明为 NSMenuDelegate)并覆盖 menuWillOpen 和 menuNeedsUpdate - 但我的代码从未被调用。

我可以看到 PDFView 正在混合文本字段和 pdf 相关菜单项,具体取决于文本选择,在显示的上下文菜单中,因此显然没有固定的菜单。

无论如何我可以拦截这个还是我只需要强制我自己的菜单就可以了?

在 MacOS 10.13 上。

Wil*_*eke 7

子类化PDFView和覆盖func menu(for event: NSEvent) -> NSMenu?。调用super并调整菜单。

采用协议NSMenuItemValidation并实施func validateMenuItem(_ menuItem: NSMenuItem) -> Bool来启用和禁用项目。