【问题标题】:showing a pdf in uiwebview on ios9 sometimes scrolling is stuck在 ios9 上的 uiwebview 中显示 pdf 有时滚动会卡住
【发布时间】:2016-06-05 09:22:53
【问题描述】:

我正在开发一个用 swift xcode7 编写的 ios 应用程序

一个视图上有一个UIWebView。

使用loadRequest(NSURLRequest) 我们从磁盘加载一个pdf文件。 这工作正常,但有时 pdf 文件无法滚动到第一页或您在屏幕上首先看到的内容。我无法确定导致不滚动的原因,因为有时我再次打开同一个文件然后它会滚动。

当它不想反弹屏幕底部时尝试滚动,并且您可以看到还有另一个页面,但您无法将其滚动到视图中。

UIWebView(这是默认值)中包含的 UIScrollView 知道还有更多页面,因为它在屏幕上显示“1 of 3”。

UIWebView

  • 已选中“缩放页面以适应”
  • 已选中“启用用户交互”
  • 未选中“多点触控”
  • 已选中“自动调整子视图大小”
  • 具有“缩放填充”模式

我尝试了以下方法:

  • 通过在其周围放置边框来检查滚动视图是否不大于屏幕:不,它适合屏幕并且与您期望的一样大
  • 在代码中将内部 UIScrollView.scollEnabled 设置为 true

在应用程序中,当显示UIWebview 时,它会通过折叠其上方的元素在屏幕上调整大小,但我已经用固定高度测试了它,它没有改变任何东西。

当我在内部UIScrollView上调用flashScrollIndicators()时,这与滚动或非滚动一致。如果您看到滚动条闪烁,则可以滚动。如果没有,那么您不能滚动到第一页。

我可以尝试其他任何想法吗?

【问题讨论】:

    标签: ios swift pdf uiwebview


    【解决方案1】:

    这听起来像是一个奇怪的UIWebView 问题。 您可以检查另外两件事:

    • 轮换后问题是否得到解决? (我曾经发生过这种情况)

    • 如果您在内部 UIScrollView 上调用 flashScrollIndicators 并且它没有响应。内部的UIScrollView 是 nil 对象吗?

    另一个解决方案是尝试使用WKWebView。它可能会解决问题。请确保仅在最新版本的 iOS 中使用它。

    您还可以降级并使用 CoreGraphics 实现它,因为您在设备本身而不是网络上拥有 PDF (official docs)。可能有一个很好的 CocoaPod 或 Carthage 框架可供您使用。

    【讨论】:

    • 设备方向已锁定。它只是 iPhone。我正在尝试其他建议,但 WKWebView 可能是一个初学者,我将检查用户人口统计: ios 版本。 scrollview 不是 nil,但是 webViewDidFinishLoad 被调用了两次。
    • 好吧,你差点把它修好了。该应用程序异步下载文档并将它们放在磁盘上。因此,它首先检查文件是否存在,如果不存在,则将 about:blank 加载到 UIWebView 中。然后当pdf存在时,它会加载pdf。我认为加载 about:blank 会弄乱 UIWebView 的大小/滚动设置,因为禁用第一次加载,我无法再重现。但是,在连接速度较慢的情况下,这会导致前一个文件首先出现,所以回到绘图板。
    • 很高兴我能帮上忙。只要确保 UIWebView 仅在 PDF 下载完成后打开。否则,向用户显示文件仍在下载中的一些反馈。所以是的,你可能需要回到绘图板来优化这里的用户体验。祝你好运!
    • 我想我已经通过加载一个空白的 pdf 文件(没有文本保存为 pdf 的单页 word doc)解决了这个问题。 about:blank 真的弄乱了文档的大小。需要进行一些更彻底的测试,但这对用户来说也应该没问题。
    【解决方案2】:

    根本问题是,在加载新的 pdf 之前,UIWebView 每次都通过加载“about:blank”来清除,这是清除 webview 的最建议解决方案。但是,当处理具有不同页面大小和不同页数的 pdf 时,这似乎与内置的滚动视图相混淆。

    在这种情况下,解决方案是创建一种带有单个页面的“空白”pdf(可能还有一个应用程序徽标,以便用户清楚地区分它),而不是加载 about:blank,而是加载此 pdf在向用户显示 web 视图之前以及等待真正的 pdf 下载到设备时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2012-03-07
      相关资源
      最近更新 更多