2013-04-04 53 views
1

我的activityViewController添加到我的应用程序象下面,传递图像器件和模拟器不同UIActivityController行为

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

在在模拟器(Twitter,Facebook和微博账户的所有未配置):

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

但设备:

在我的应用程序

:Twitter,Facebook和微博仅配置了账户显示。

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

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

回答

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 ..

+0

对不起,我认为我应该更清楚。即使用户在设置中没有链接到设备的帐户,我也希望twitter,facebook和weibo选项在设备上的应用中可用 – tzl 2013-04-04 10:02:07

+0

即使帐户没有配置设备,上面的代码也会提供这些选项。 。 – Mani 2013-04-04 10:18:11

+0

这可以在模拟器上工作(但模拟器上的行为是正确的),但不是在设备上。对于你来说,在设备上,没有配置Facebook帐户,是activitycontroller中的facebook选项? – tzl 2013-04-04 10:37:55

2

好吧,我想通这个问题。

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

下面将出现如邮件,微博,脸谱,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];