
[英]iOS 6 UIGestures (Tap) stops working with QLPreviewController
[英]QLPreviewController not working in iOS 6
在iOS 6中,QLPreviewController不再从URL加载PDF。 它在iOS 5中运行良好。我已经实现了QLPreviewControllerDataSource方法,如此处所述 。
#pragma mark - QLPreviewControllerDataSource
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
return 1;
}
- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index;
{
NSURL *fileURL = [NSURL URLWithString:@"http://www.bliley.net/XTAL/PDF_Instructions/Test_File.pdf"];
return fileURL;
}
这在iOS 5中完美运行,但在iOS 6中控制台输出:
Couldn't issue file extension for path: /XTAL/PDF_Instructions/Test_File.pdf
您是否尝试过使用fileURLWithPath而不是URLWithString? 通过这样做我还有其他问题。
还不确定QLPreviewController是否会处理远程URL。 如果没有,您可以下载该文件,然后显示它。
我从远程URL下载文件并在本地保存,然后我使用QLPreviewController显示PDF。在iOS 6中它正在工作。
首先,我使用以下代码从远程URL保存文件:
NSString *local_location;
NSString *path = [[NSBundle mainBundle] pathForResource:@"sampleData" ofType:@"plist"];
path = NSTemporaryDirectory();
local_location= [path stringByAppendingPathComponent:[NSString stringWithFormat:@"My_Invoice.pdf"]];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: remoteurl]];
[request setDownloadDestinationPath:local_location];
[request startSynchronous];
为了显示Pdf:
QLPreviewController* preview = [[QLPreviewController alloc] init];
preview.dataSource = self;
[self presentModalViewController:preview animated:YES];
QLPreviewController委托方法是:
- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
return 1;
}
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
return [NSURL fileURLWithPath:local_location];
}
我遇到了类似的问题,似乎可能源于对QLPreviewItem的文件类型URL的更严格执行
@property (readonly) NSURL *previewItemURL;
Discussion
This property is used by a Quick Look preview controller to get an item’s URL. In typical use, you would implement a getter method in your preview item class to provide this value.
The value of this property must be a file-type URL.
If the item is not available for preview, this property’s getter method should return nil. In this case, the Quick Look preview controller displays a “loading” view.
Availability
Available in iOS 4.0 and later.
Declared In
QLPreviewItem.h
更新:我已经打开了一个与苹果处理这个问题的苹果公司的错误,它似乎已经把它作为一个bug,所以可能会在不久的将来提供修复。 我打开的错误与使用自定义NSURLProtocols进行预览有关,但也可能适用于其他方面。
但请注意,QLPreviewController需要一个到本地资源的URL
您需要先在本地下载并保存PDF文件,然后为本地文件创建正确的文件URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.