UIDocumentInteractionController停止工作iOS 8

UIDocumentInteractionController停止工作iOS 8,第1张

概述我有一个PDF文件保存在文档目录中.该文件的路径存储在NSString属性“self.URL”中. 这是我提供活动项目的代码: -(void)presentDocumentInteractionController{ self.docController = [UIDocumentInteractionController interactionControllerWithURL:self 我有一个pdf文件保存在文档目录中.该文件的路径存储在Nsstring属性“self.URL”中.
这是我提供活动项目的代码:

-(voID)presentdocumentInteractionController{    self.docController = [UIdocumentInteractionController interactionControllerWithURL:self.URL];    self.docController.delegate = self;    [_docController setUTI:@"com.adobe.pdf"];    [_docController presentoptionsMenuFrombarbuttonItem:self.activitybarbutton animated:YES];}

在iOS 8之前,这段代码运行良好.向用户呈现了诸如打印,复印和电子邮件之类的项目列表以供选择.升级到iOS 8 / XCode 6之后,我收到了这个运行时错误(它没有崩溃应用程序):

UnkNown activity items supplIEd: (    "<UITextVIEwPrintFormatter: 0x7f908ba53ca0>")

我怎么解决这个问题?

解决方法 我有同样的问题,并已切换到使用UIActivityVIEwController.然而,这使得能够打开pdf的应用程序不再显示,所以也许这不是你想要的.

最小解决方案:

如果你想做最少的工作,你甚至不需要将你的pdf读入NSData,使用NSURL作为活动项目,iOS似乎知道该怎么做:

- (voID)share:(ID)sender{    UIActivityVIEwController *activity =        [[UIActivityVIEwController alloc] initWithActivityItems:@[self.URL]                                          applicationActivitIEs:nil];    if ([activity respondsToSelector:@selector(popoverPresentationController)]) {        activity.popoverPresentationController.barbuttonItem = <# bar button ITEM #>;    }    [self presentVIEwController:activity animated:YES completion:NulL];}

原答案:

使您的视图控制器遵循UIActivityItemSource协议,然后您可以执行以下 *** 作:

- (voID)share:(ID)sender{    self.pdfData = [NSData dataWithContentsOfURL:self.URL];    UIActivityVIEwController *activity = [[UIActivityVIEwController alloc] initWithActivityItems:@[self] applicationActivitIEs:nil];    if ([activity respondsToSelector:@selector(popoverPresentationController)]) {        activity.popoverPresentationController.barbuttonItem = <# bar button ITEM #>;    }    [self presentVIEwController:activity animated:YES completion:NulL];}

如果您有pdf文件,则遵守协议相对简单.您当然可以优化并返回较小的NSData甚至是预览图像,但最低限度地执行此 *** 作:

- (ID)activityVIEwControllerPlaceholderItem:(UIActivityVIEwController *)activityVIEwController{    return _pdfData;}- (ID)activityVIEwController:(UIActivityVIEwController *)activityVIEwController    itemForActivityType:(Nsstring *)activityType{    return _pdfData;}- (Nsstring *)activityVIEwController:(UIActivityVIEwController *)activityVIEwController    subjectForActivityType:(Nsstring *)activityType{    return self.Title;}- (Nsstring *)activityVIEwController:(UIActivityVIEwController *)activityVIEwController    dataTypeIDentifIErForActivityType:(Nsstring *)activityType{    return @"com.adobe.pdf";}
总结

以上是内存溢出为你收集整理的UIDocumentInteractionController停止工作iOS 8全部内容,希望文章能够帮你解决UIDocumentInteractionController停止工作iOS 8所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存