3

UIDocumentInteractionController用户从tableView.

返回 NO并且永远不会调用interactionControllerWithURL委托方法documentInteractionControllerViewControllerForPreview并且documentInteraction控制器不会出现。

当用户选择表中的项目时,将执行以下代码:

    NSURL *fileURL;
    fileURL = (NSURL *)[[DataMng sharedMng] getFileInFolder:self.navigationItem.title atRow:indexPath.row type:type];

    if (self.docInteractionController == nil){
        self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
        if (!self.docInteractionController) {
            NSLog(@"Selected a file with estension not supported for visualization");
            return;
        }
        self.docInteractionController.delegate = self;
    }else{
        self.docInteractionController.URL = fileURL;
    }

    if(! [self.docInteractionController presentPreviewAnimated:YES]){
        NSLog(@"ERROR in presenting preview");
    }

委托控制器(self)符合UIDocumentInteractionControllerDelegate协议,是控制器内部的导航Tabbar控制器。

欢迎任何想法

4

3 回答 3

8

我回答我自己的问题:

我启动 docInteractionController 的表单是正确的,问题出在文件 url 中,它缺少正确的扩展名(在我的例子中是 .pdf)和控制器 UTI,它必须是扩展形式(com.adobe.pdf)。

一旦正确设置预览显示没有问题。

于 2012-06-28T17:19:08.203 回答
1

您使用这些方法来显示 UIDocumentInteractionController:-

-(UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller

{
    return [[[[UIApplication sharedApplication] delegate]window]rootViewController];

}

-(void)documentInteractionControllerDidEndPreview:    (UIDocumentInteractionController *)controller 

{

    self.navigationController.navigationBarHidden = YES;

}
于 2015-07-22T05:19:20.583 回答
0
if(! [self.docInteractionController presentPreviewAnimated:YES]){
        NSLog(@"ERROR in presenting preview");
    }

想想,这不是呈现文档交互控制器的正确方式。尝试设置以下代码

CGRect rect = CGRectMake(0, 0, 0, 0);
[self.docInteractionController presentOpenInMenuFromRect:rect inView:self.view animated:YES];

希望这对您有所帮助。

于 2012-06-26T13:04:23.260 回答