UIActivityController在设备和模拟器上的行为不同

时间:2013-04-04 08:25:22

标签: ios facebook twitter ios6 weibo

我将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和微博选项。

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

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

我认为您只想在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中排除..