我有一个包含不同 pdf 文档的视图,我希望能够检测每个文档何时到达最后一页。
我的方法是观察 PDFViewPageChanged 通知
documentId = ...
obs = NotificationCenter.default.addObserver(forName: .PDFViewPageChanged, object: nil, queue: nil) { (notification) in ...
guard let notificationPdfView = notification.object as? PDFView,
let currentPage = notificationPdfView.currentPage?.pageRef?.pageNumber,
let totalPageNumber = notificationPdfView.document?.pageCount,
let docStringCount = notificationPdfView.document?.string else { return }
print("FB: notification: \(documentId) currentPage: \(currentPage)/\(totalPageNumber)" )
}
然后检查当前页是否等于文档总页数。
唯一的问题是我收到通知,告诉我即使在我触摸 pdf 文件之前,当前页面已经更改,并且在某些情况下,文档被滚动到最后一页的条件被错误地满足。
FB: notification: Document 1 currentPage: 1/2
FB: notification: Document 1 currentPage: 1/2
FB: notification: Document 1 currentPage: 2/2 // <----
FB: notification: Document 1 currentPage: 1/2
关于为什么会发生这种情况的任何线索?