UIActivityViewController问题iOS 7和iOS 8?

我正在为iPad制作一篇文章阅读应用程序.我已经整合了社交分享功能,这意味着用户可以在Facebook上分享文章和谷歌邮件.
我正在使用UIActivityViewController进行共享.

一个按钮项,当用户点击该UIActivityViewController打开.我更新Xcode 6
当我运行在模拟器上运行良好但是我运行在iOS 7的真实设备(iPad)上,该应用程序在点击按钮项目崩溃.
这是我的代码

- (IBAction)ysshareAction:(id)sender
       {

         NSURL *linkURL = [NSURL URLWithString:_DetailModal1[4]];//article url
         NSMutableAttributedString *stringText = [[NSMutableAttributedString alloc]  initWithString:_DetailModal1[0]];//_DetailModal1[0] contain article title////
        [stringText addAttribute:NSLinkAttributeName value:linkURL range:NSMakeRange(0,stringText.length)];
        NSArray * itemsArray = @[[Nsstring stringWithFormat:@"%@",_DetailModal1[0]],[NSURL URLWithString:_DetailModal1[4]]];
        NSArray * applicationActivities = nil;
        UIActivityViewController * AVC = [[UIActivityViewController alloc] initWithActivityItems:itemsArray applicationActivities:applicationActivities];
        AVC.popoverPresentationController.sourceView = _webView;
        [self presentViewController:AVC animated:YES completion:nil];
        [AVC setCompletionHandler:^(Nsstring *act,BOOL done)
        {

        if([act isEqualToString:UIActivityTypeMail]) {
         ServiceMsg = @"Mail sent!";
     } else if([act isEqualToString:UIActivityTypePostToTwitter]) {
         ServiceMsg = @"Article Shared!";
     } else if([act isEqualToString:UIActivityTypePostToFacebook]) {
         ServiceMsg = @"Article Shared!";
     } else if([act isEqualToString:UIActivityTypeMessage]) {
         ServiceMsg = @"SMS sent!";
     } else if([act isEqualToString:UIActivityTypeAddToReadingList]) {
         ServiceMsg = @"Added to Reading List";
     } else if([act isEqualToString:UIActivityTypecopyToPasteboard]){
         ServiceMsg = @"copied Link";
     }

     if ( done )
     {
         UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:ServiceMsg message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
         [Alert show];

          }
       }];

    }

帮助是赞赏!

解决方法

以下是问题
AVC.popoverPresentationController.sourceView = _webView;

你将不得不放置iOS8的条件popoverPresentationController被引入iOS 8和更高版本,所以你不能使用它与iOS 7

为了检查iOS8,您可以定义从here发现的宏

#define SYstem_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

并以下列方式使用它.

NSURL *linkURL = [NSURL URLWithString:_DetailModal1[4]];//article url
     NSMutableAttributedString *stringText = [[NSMutableAttributedString alloc]  initWithString:_DetailModal1[0]];//_DetailModal1[0] contain article title////
    [stringText addAttribute:NSLinkAttributeName value:linkURL range:NSMakeRange(0,stringText.length)];
    NSArray * itemsArray = @[[Nsstring stringWithFormat:@"%@",[NSURL URLWithString:_DetailModal1[4]]];
    NSArray * applicationActivities = nil;
    UIActivityViewController * AVC = [[UIActivityViewController alloc] initWithActivityItems:itemsArray applicationActivities:applicationActivities];

   if(SYstem_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")){

        AVC.popoverPresentationController.sourceView = _webView;
   }
   [self presentViewController:AVC animated:YES completion:nil];

有关iOS8中UIActivityViewController的更改信息,请参阅this

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...