UIDocumentInteractionController:发送到实例的无法识别的选择器

时间:2015-10-07 09:29:03

标签: ios xcode unrecognized-selector uidocumentinteraction

我正在使用UIDocumentInteractionController与其他应用共享文档(PDF)。

使用不同应用的视图显示正常但当我按任意应用打开/保存/共享文件时,我的应用程序崩溃。

我收到Unrecognised selector sent to instance错误。

似乎错误来自我给的文件网址(不确定):

[UIDocumentInteractionController interactionControllerWithURL:url];

DocumentInteractionManager.h

@interface DocumentInteractionManager : UIViewController <UIDocumentInteractionControllerDelegate>

@property (nonatomic, retain) UIDocumentInteractionController* documentInteractionController;
@property (nonatomic, copy) NSURL *url;

- (void)openDocumentFromRect:(UIView*)view withURL:(NSURL*)fileUrl;

@end

DocumentInteractionManager.m

@implementation DocumentInteractionManager

@synthesize documentInteractionController;
@synthesize url;

//fileUrl is something like: file:///var/mobile/Containers/Data/Application/[APP]/Library/file.pdf
- (void)openDocumentFromRect:(UIView*)view withURL:(NSURL*)fileUrl {

    self.url = fileUrl;
    if (url) {
        documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:self.url];

        // Configure Document Interaction Controller
        [documentInteractionController setDelegate:self];
        CGRect rect = [view frame];

        [documentInteractionController presentOptionsMenuFromRect:[view frame] inView:view animated:YES];
    }
}


@end

修改

以下是我创建网址的方式:[NSURL fileURLWithPath:pdfPath]

请注意,当我使用UIActivityViewController并通过AirDrop分享

时,它可以正常工作

EDIT2:

以下是我收到的一些不同消息(取决于我选择的应用):

  • iBooks:[__NSCFString URL]: unrecognized selector sent to instance
  • 复制:[OS_dispatch_queue URL]:发送到实例的无法识别的选择器
  • 电子邮件:[NSISLinearExpression URL]:发送到实例的无法识别的选择器

任何想法?

1 个答案:

答案 0 :(得分:0)

好的,我已经明白了。

我错误的是我在UIDocumentInteractionController方法中实例化了- (void)openDocumentFromRect:(UIView*)view withURL:(NSURL*)fileUrl。所以基本上当我离开那个方法时UIDocumentInteractionController被摧毁了。

我现在在init方法中实例化UIDocumentInteractionController,并且它按预期工作。