【问题标题】:UIActivityController behaviour different on device and simulatorUIActivityController 在设备和模拟器上的行为不同
【发布时间】:2013-03-26 05:22:19
【问题描述】:

我向我的应用添加了一个activityViewController,如下所示,传入一张图片

UIActivityViewController *avc = [[UIActivityViewController alloc]initWithActivityItems:[NSArray arrayWithObjects:img,nil] applicationActivities:[NSArray arrayWithObjects:nil]];
        [self presentModalViewController:avc animated:YES];
        [avc release];

在模拟器上(推特、脸书和微博账户均未配置):

选项邮件、推特、脸书、微博、分配给联系人、保存到相机胶卷、打印和复制默认显示。

但在设备上:

在我的应用程序中:twitter、facebook 和 weibo 仅显示帐户是否已配置。

在 safari 中:无论是否配置帐户,都可以使用 twitter、facebook 和 weibo 选项。

我希望我的应用程序中的行为与 safari 相同。我错过了某个特定步骤吗?

【问题讨论】:

    标签: ios facebook twitter ios6 weibo


    【解决方案1】:

    我认为您只想在 UIActivityViewController 中显示某些特定服务。您可以将一个名为excludedActivityTypes 的属性定义如下,以避免某些默认活动。

    UIActivityViewController *yourvc = [[UIActivityViewController alloc]initWithActivityItems:[NSArray arrayWithObjects:img,nil] applicationActivities:[NSArray arrayWithObjects:nil]];
    yourvc.excludedActivityTypes = @[UIActivityTypePostToWeibo,UIActivityTypePrint,UIActivityTypeMail,UIActivityTypeCopyToPasteboard];//Try this code in simulator.. you can only see FB & Twitter.  
            [self presentModalViewController:yourvc animated:YES];
            [avc release];
    

    同样你可以从默认的 UIActivityViewController 中排除。

    【讨论】:

    • 对不起,我想我应该更清楚。我希望 twitter、facebook 和 weibo 选项在应用程序、设备上可用,即使用户在设置中没有与设备关联的帐户
    • 即使帐户未配置设备,上述代码也将提供这些选项..
    • 这适用于模拟器(但模拟器上的行为一开始是正确的),但不适用于设备。对你来说,在设备上,没有配置 facebook 帐户,activitycontroller 中的 facebook 选项是否可用?
    • 当然,不用配置任何账号,facebook或者twitter或者微博都可以在activityviewController中使用。您可以排除除这三个之外的所有内容。并在设备上启动您的应用程序。您只能在您的应用程序上看到这三个选项。我确定。它应该工作..
    • 不幸的是,我无法在我的手机或我的同事上观察到这一点:(
    【解决方案2】:

    好的,我已经解决了问题。

    UIActivityViewController 中显示的选项完全取决于要共享的项目的类型。例如,如果有视频,则不会显示 Facebook 或 twitter 选项。但如果是图片和标题,肯定会显示相关选项。

    以下将显示邮件、推特、Facebook、assignToContact、保存到相机胶卷、打印、复印等应用

    // Create the content
    NSString *message = @"The Upcoming App Scribble Talk";
    UIImage *imageToShare = [UIImage imageNamed:@"createbtn.png"];
    
    NSArray *objectsToShare = [NSArray arrayWithObjects:message, image, nil];
    

    但是,以下内容应仅显示相机胶卷、邮件或副本。

    NSString *message = @"The Upcoming App Scribble Talk";
    NSString *videoToShare = @"myFirsScribble.mov";
    NSURL *videoPath = [NSURL fileURLWithPath:videoToShare];
    
    NSArray *objectsToShare = [NSArray arrayWithObjects:message, videoPath, nil];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 2011-10-28
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多