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