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

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

一个视图上有一个UIWebView

使用loadRequest(NSURLRequest)我们从磁盘加载一个PDF文件。 这工作正常,但有时PDF文件不能滚动通过第一页或你看到的第一个在屏幕上。 我无法确定是什么原因导致不滚动,因为有时我再次打开同一个文件,然后滚动。

试图滚动,当它不想弹跳屏幕的底部,你可以看到有另一个页面,但你不能滚动到视图。

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

UIWebView

  • 有'缩放页面适合'检查
  • 已启用'用户交互'检查
  • 有'多点触摸'不检查
  • 有'autoresize子视图'选中
  • 有模式'填充比例'

我已经尝试了以下内容:

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

在应用程序中,当显示UIWebview ,它通过折叠上面的元素来在屏幕上resize,但是我已经用固定的高度testing了它,并且它不改变任何东西。

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

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

这听起来像一个奇怪的UIWebView问题。 还有两件事你可以检查:

  • 旋转后问题是否解决? (曾经发生过这种事)

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

另一个解决scheme是尝试使用WKWebView 。 它可能会解决这个问题。 只要确保只在iOS的最新版本中使用它。

你也可以下一层,并使用CoreGraphics实现它,因为你在设备本身上有PDF,而不是在网上( 官方文档 )。 这可能是一个很好的CocoaPod或Carthage框架。

潜在的问题是,在加载一个新的PDF之前,UIWebView每次加载“about:blank”,这是最清楚的webviewbuild议的解决scheme被清除。 但是,使用不同页面大小和不同页面数的pdf时,这似乎与内置滚动视图混乱。

在这种情况下,解决scheme是创build一个“空白”pdf与单个页面(也许应用程序的标志,以清楚地为用户区分),而不是加载about:blank,加载这个pdf,而不是显示webview给用户,同时等待真正的pdf下载到设备上。