在ios9上的uiwebview中显示pdf有时滚动卡住了

时间:2016-02-23 13:46:12

标签: ios swift pdf uiwebview

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

视图上有UIWebView

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

当它不想弹回屏幕的底部时尝试滚动,你可以看到有另一个页面,但是你无法将其滚动到视图中。

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

UIWebView

  • 有'缩放页面以适合'已检查
  • 已启用“已启用用户互动”
  • 未选中“多次触摸”
  • 已选中“自动调整子视图”
  • 具有'Scale To Fill'模式

我尝试了以下内容:

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

在应用程序中,当显示UIWebview时,它会通过折叠其上方的元素在屏幕上调整大小,但我已经使用固定高度对其进行了测试,并且它不会改变任何内容。

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

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

2 个答案:

答案 0 :(得分:2)

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

  • 旋转后问题是否已解决? (这曾经发生在我身上)

  • 如果您在内部flashScrollIndicators上致电UIScrollView并且没有回应。内部UIScrollView是否为零对象?

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

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

答案 1 :(得分:2)

根本问题在于,在加载新的pdf之前,每次都通过加载关于:blank'来清除UIWebView,这是清除webview的最佳建议解决方案。但是,在处理具有不同页面大小和不同页数的pdf时,这似乎与内置的scrollview混乱。

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