当用户滑动到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本身。它仍在崩溃,但我想这是一个问题。我在上面的代码示例中将其更改为我现在拥有的内容。
您告诉通知中心在通知触发时通知PDFView
。 PDFView
没有实施该方法。无论你在哪个类中编写该方法,都应该处理通知。所以:
NotificationCenter.default.addObserver(self, selector #selector(handlePageChange(view:)), name: .PDFViewPageChanged, object: nil)
此外,您的通知处理程序方法具有错误的签名。通知中心将通知传递给方法,而不是实际视图,因此您可能希望它通过
@objc private func handlePageChange(notification: Notification)