iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了UIDocumentInteractionController停止工作iOS 8大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。