无法在swift WebView中加载/滚动完整的pdf。

时间:2016-03-25 07:12:36

标签: ios swift webview

我正在尝试使用swift使用Web视图加载pdf。它只能加载pdf的一页,不能向下滚动多页。我该怎么办?

导入UIKit

类ViewController:UIViewController,UIWebViewDelegate {

@IBOutlet var webViews: UIWebView!

var path = ""

override func viewDidLoad() {
    super.viewDidLoad()

    path  = NSBundle.mainBundle().pathForResource("ibook", ofType: "pdf")!
    let url = NSURL.fileURLWithPath(path)

    /*webViews.scalesPageToFit = true
    webViews.scrollView.scrollEnabled = true
    webViews.userInteractionEnabled = true*/

    webViews.delegate = self

    self.webViews.loadRequest(NSURLRequest(URL: url!
        ))
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}


func webViewDidStartLoad(webView : UIWebView) {
    //UIApplication.sharedApplication().networkActivityIndicatorVisible = true
    println("webViewDidStartLoad")
}

func webViewDidFinishLoad(webView : UIWebView) {
    //UIApplication.sharedApplication().networkActivityIndicatorVisible = [enter image description here][1]false
    webViews.scalesPageToFit = true
    webViews.scrollView.scrollEnabled = true
    webViews.userInteractionEnabled = true
    println("webViewDidFinishLoad")
}

}

1 个答案:

答案 0 :(得分:0)

我在尝试显示外部pdf(不是捆绑的)时碰到了类似的问题,但我想你可以使用相同的修复程序。

webViewDidFinishLoad中,检查网址是否真的是pdf网址。因为在我的情况下,我知道我期待什么,我使用简单的哑巴检查。如果url链接到pdf,则需要重新加载Web视图才能正确显示它,因此能够滚动。

这是目标C中的一些简化代码。它在Swift中应该非常相似。尝试这样的事情:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    static BOOL isPdfReloaded = NO;

    if (!isPdfReloaded && [webView.request.URL.absoluteString containsString:@".pdf"])
    {
        [webView reload];
        isPdfReloaded = YES;
    }
    else
    {
        isPdfReloaded = NO;
    }
}