这是我提供活动项目的代码:
-(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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)