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

问题描述 投票:0回答:1

当用户滑动到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本身。它仍在崩溃,但我想这是一个问题。我在上面的代码示例中将其更改为我现在拥有的内容。

ios swift pdfkit notificationcenter
1个回答
1
投票

您告诉通知中心在通知触发时通知PDFViewPDFView没有实施该方法。无论你在哪个类中编写该方法,都应该处理通知。所以:

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

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

@objc private func handlePageChange(notification: Notification)
© www.soinside.com 2019 - 2024. All rights reserved.