【问题标题】:UIWebView Fails Loading Online PDFUIWebView 无法加载在线 PDF
【发布时间】:2016-02-17 15:27:12
【问题描述】:

我有一个在线存储的 PDF。我尝试使用UIWebView 访问它。 UIActivityViewController 将开始旋转,然后在大约 5 秒后停止,永远不会在视图中加载任何内容。该文件大小为 12.4MB,正在非常快的互联网连接上进行测试。

- (void)viewWillAppear:(BOOL)animated
{

    [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.316apps.com/QMCC/current.pdf"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]];
    timer = [NSTimer scheduledTimerWithTimeInterval:(1.0/2.0) target:self selector:@selector(tick) userInfo:nil repeats:YES];

}
-(void)tick {
    if(!webview.loading)
        [activity stopAnimating];
    else
        [activity startAnimating];

}

【问题讨论】:

    标签: ios pdf uiwebview


    【解决方案1】:

    我在(慢速)互联网连接上尝试了这个,它确实在大约 62 秒内加载。

    你可以尝试的事情:

    • 增加请求的超时时间(到 2 分钟,也许你的模拟器或手机连接实际上和我的一样慢)。
    • 只是为了清理一下,不要使用计时器来显示/隐藏活动指示器,使用UIWebView 委托方法,例如webViewDidFinishLoad:

    这是我的示例代码:

    class ViewController: UIViewController, UIWebViewDelegate {
    
        @IBOutlet weak var webView: UIWebView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            webView.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.316apps.com/QMCC/current.pdf")!))
        }
    
        func webViewDidStartLoad(webView: UIWebView) {
            // Show your activity indicator.
            UIApplication.sharedApplication().networkActivityIndicatorVisible = true
        }
    
        func webViewDidFinishLoad(webView: UIWebView) {
            // Hide your activity indicator.
            UIApplication.sharedApplication().networkActivityIndicatorVisible = false
        }
    
        func webView(webView: UIWebView, didFailLoadWithError error: NSError?) {
            print("FAIL: ", error)
        }
    }
    

    【讨论】:

    • 会尝试一下,谢谢。在 Obj-C 中看起来如何?我的整个应用程序的其余代码都在 Obj-C 中
    • 基本上是一样的。在 Objective-C 中,要使类符合协议,您使用 @interface MyClass : NSObject <NSObject>,但在 swift 中它是 class MyClass: NSObject, NSObject。现在,只需开始输入- (void)webViewDidSta... 之类的方法,Xcode 就会为您自动完成它们。
    • 好的,我尝试增加超时时间,但仍然无法加载。我现在正在使用我的 iPad pro,我在 Safari 中访问了那个网站,加载 PDF 花了 12 秒。我打开了指向完全相同 URL 的应用程序,我等待了超过 2 1/2 分钟,但它永远不会加载它
    • 您可以尝试在 iPad Pro 上再次运行此程序,启用 Desktop safari 中的“开发”选项卡,然后从列表中选择您的 iPad Pro。在那里,您可以选择 Web 视图并对其进行检查。然后,您可以检查控制台选项卡是否存在 JavaScript 错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多