【发布时间】:2021-11-17 08:26:30
【问题描述】:
注意:这个问题暂时没有解决;标记的答案提供了一个很好的解决方法 - 它在应用程序仍处于打开状态时工作。 仍然欢迎回答!
背景
我目前正在开发一个包含全屏PDFView 的应用程序,我希望程序在视图被关闭之前记住文档中的位置,以便用户可以从他们离开的地方继续。
实施
应用程序的简化版本可以理解为使用PDFKit.PDFView 的PDF 查看器。故事板由一个连接到 PDFView 类 DocumentView(符合 UIViewController)的 UIView 组成。视图通过以下过程初始化:
在viewDidLoad:
let PDF: PDFDocument = GetPDFFromServer()
DocumentView.document = PDF!
DocumentView.autoScales = true
... (other settings)
// Set PDF Destination
let Destination: PDFDestination = GetStoredDestination()
// Code with issues
DocumentView.go(to: Destination)
在viewWillDisappear:
StoreDestination(DocumentView.currentDestination)
问题与测试
我意识到代码没有按预期工作;视图不会返回到之前的位置。
通过调试,我意识到这可能是由于DocumentView.go(to destination: PDFDestination)和DocumentView.currentDestination的行为不一致造成的。
为确保存储位置时不会因错误而引入错误,以下代码用于验证问题,并带有多页文档:
在viewDidLoad
Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { _ in
DispatchQueue.main.async {
self.DocumentView.go(to:self.DocumentView.currentDestination!)
}
})
预期和观察到的行为
预期:文档的位置不应更改 - 代码将每 1 秒到达其当前目的地,这应该没有影响。因为“currentDestination”应该是“文档的当前目的地,每个文档”)
观察到:在执行时,页面会自发地向下滚动一个固定的偏移量。
在 iPadOS 14.5 模拟器和 iPadOS 15 iPad Air(第 4 代)上观察到相同的结果。
可能出了什么问题?
如果有人能帮忙就太好了。
干杯, 林肯
这个问题最初是在一周前发布在Apple Developer Forum上的;一个多星期没有收到任何回复,所以我想我可以在 StackOverflow 上试试运气
【问题讨论】:
-
您能否发布 DocumentView 的代码,以及在关闭前一个视图后如何再次创建它?
-
当然,将编辑问题并解决该问题。
-
嘿 - 我已经更新了这个问题,提供了有关此问题的更多详细信息。提前致谢!
标签: ios swift ipados ios-pdfkit