将观察者添加到 PDFView 时发送到实例的无法识别的选择器

Unrecognized selector sent to instance when adding observer to PDFView

我正在尝试在用户滑动到 PDFView 中的下一页或上一页时进行一些 UI 更改。我将其设置为使用默认的 PageViewController。我在 PDFView 上添加了一个观察器,并为其设置了一个选择器。当我尝试滑动时它崩溃了,错误消息是这样的:

-[PDFView handlePageChangedWithNotification:] unrecognized selector sent to instance
...
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PDFView handlePageChangedWithNotification:]: unrecognized selector to instance.

我已经检查了委托方法,但没有找到任何有助于实现此功能的方法。所以,我假设我必须正确命名它才能工作。这是我用来添加观察者的代码:

// Add observer to pdfView
// This is added in viewDidAppear()
NotificationCenter.default.addObserver(pdfView, selector #selector(handlePageChange(view:)), name: .PDFViewPageChanged, object: nil)

// Selector method for observer
@objc private func handlePageChange(view: PDFView)
{
     // Do some changes
}

我希望能够检查何时显示新页面能够检查 PDFOutline 如果该页面被标记为书签并更改书签按钮以显示它已经是书签。感谢您提供的任何帮助。

编辑:我检查了 PDFViewPageChanged 通知的文档,它说通知对象是 PDFView 本身。它仍然在崩溃,但我想这是一个问题。我在上面的代码示例中将其更改为现在的内容。

您是在告诉通知中心在通知触发时通知 PDFViewPDFView 没有实现该方法。无论 class 您编写的方法是什么,都应该处理通知。所以:

NotificationCenter.default.addObserver(self, selector #selector(handlePageChange(view:)), name: .PDFViewPageChanged, object: nil)

此外,您的通知处理程序方法的签名有误。通知中心将通知传递给方法,而不是实际视图,因此您希望它是

@objc private func handlePageChange(notification: Notification)