如何使用 PDFkit 检测滚动到 PDF 中的另一个页面
Posted
技术标签:
【中文标题】如何使用 PDFkit 检测滚动到 PDF 中的另一个页面【英文标题】:How to detect scrolling to another page in PDF using PDFkit 【发布时间】:2019-03-17 11:58:44 【问题描述】:我正在尝试添加当前页码 所以当用户滚动到另一个页面时,它会显示 例如 2 of 3(如果 pdf 有 3 页)
目前,我使用此代码
它将始终显示 1 of 3
我认为 PDFkit 使用 UIScrollView 所以我需要以在滚动到另一个页面时可以检测到的方式到达 ScrollView,然后增加当前页码
我没有找到任何方法可以在 PDFkit 中访问滚动视图
func showCurrentPageIndex()
guard let totalPages = pdfContainerView.document?.pageCount else return
guard let currentPage = pdfContainerView.currentPage else return
guard let currentPageRef = currentPage.pageRef else return
let pageIndex = currentPageRef.pageNumber
totalPageNumbers.text = "\(totalPages)"
currentPageIndex.text = "\(pageIndex)"
【问题讨论】:
【参考方案1】:使用通知 (PDFViewPageChanged
)。
import UIKit
import PDFKit
class ViewController: UIViewController, PDFViewDelegate
// MARK: - Variables
var totalCount = Int()
// MARK: - IBOutlet
@IBOutlet weak var pdfView: PDFView!
// MARK: - Life cycle
override func viewDidLoad()
super.viewDidLoad()
let filePath = "Some file document path"
pdfView.document = getDocument(path: filePath)
if let total = pdfView.document?.pageCount
totalCount = total
pdfView.backgroundColor = .lightGray
pdfView.autoScales = true
pdfView.displayMode = .singlePageContinuous
pdfView.usePageViewController(true, withViewOptions: nil)
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
/* notification */
NotificationCenter.default.addObserver (self, selector: #selector(handlePageChange), name: Notification.Name.PDFViewPageChanged, object: nil)
func getDocument(path: String) -> PDFDocument?
let pdfURL = URL(fileURLWithPath: filePath)
let document = PDFDocument(url: pdfURL)
return document
【讨论】:
非常感谢!它工作我不知道有一个页面更改通知只是为了让你的代码完整答案你忘记添加handlePageChange函数,这对我来说是相同的函数我添加了showCurrentPageIndex()我认为你必须在viewDidDisappear中删除NotificationCenter @ 987654323@以上是关于如何使用 PDFkit 检测滚动到 PDF 中的另一个页面的主要内容,如果未能解决你的问题,请参考以下文章