我正在尝试使用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")
}
}
答案 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;
}
}