有没有人知道如何使用UIDocumentInteractionController来“打开iBooks”远程pdf文件,我似乎无法绕过这一个。我已经设法在QLPreviewController中打开我的pdf并获取OptionsMenu给我在iBooks中打开的选项,但是如果它是远程的话我不会打开文件...当我使用本地文件时它工作正常。
如果不可能,还有什么替代方案?
提前致谢
答案 0 :(得分:3)
虽然UIDocumentInteractionController
具有便捷方法interactionControllerForURL:
,但它要求参数为文件URL。因此,您可以在应用程序中下载PDF并使用UIDocumentInteractionController
对象打开它,也可以使用UIWebView
对象打开远程PDF。将URL传递给Web视图,它们打开就可以了。
答案 1 :(得分:0)
广告提到你必须使用UIDOcumentInteractionController的文件网址。首先下载文档。一个非常简单的方法是使用AFNetworking。以下是我使用AFNetworking下载文件的方法:
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)req navigationType:(UIWebViewNavigationType)navigationType {
self.title = req.URL.description;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = req.URL;
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSURL *documentsDirectoryPath = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]];
self.fileURLPath = [documentsDirectoryPath URLByAppendingPathComponent:[response suggestedFilename]];
return self.fileURLPath;
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];
return YES;
}
现在您已经拥有了fileURLPath,您可以像这样创建UIDocumentInteractionController:
documentController = [UIDocumentInteractionController interactionControllerWithURL:self.fileURLPath];