UIActivityViewController问题iOS 7和iOS 8? [英] UIActivityViewController issue iOS 7 and iOS 8?

查看:160
本文介绍了UIActivityViewController问题iOS 7和iOS 8?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I’m building an article reading app for iPad. I have integrated a social sharing functionality which means user can share articles on Facebook, and google mail. I’m using UIActivityViewController for sharing.

当用户点击时,有一个条形按钮项在那个 UIActivityViewController opens.I更新Xcode 6
当我在模拟器上运行它运行良好但我在iOS 7的真实设备(iPad)上运行,该应用获得单击栏按钮项时崩溃。
这是我的代码:

There is a bar button item,when user click on that UIActivityViewController opens.I updated Xcode 6 When I run on simulator it runs fine But I run on real device(iPad) with iOS 7,the app get crash on clicking on bar button item. this is my code:

     - (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中使用它

You will have to put iOS8 condition in order popoverPresentationController is introduced for iOS 8 and later so you can not use it with iOS 7

为了检查iOS8你可以定义一个像在其他地方

For checking for iOS8 you can define a macro like found from here

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

并按以下方式使用它。

And use it in following way.

     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];

   if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")){

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

参考这个有关iOS8中 UIActivityViewController 的更改信息的更多信息

Refer this for more info about what has changed for UIActivityViewController in iOS8

这篇关于UIActivityViewController问题iOS 7和iOS 8?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆