UIActivityController行为对设备和模拟器不同(UIActivityControll

2019-08-19 09:51发布

我添加activityViewController到我的应用程序如下图所示,通过图像中

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和微博的选项是否已配置账户可用irregardless。

我期待在我的应用程序如Safari相同的行为。 我失去了一个特定的步骤?

Answer 1:

好吧,我想通这个问题。

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


Answer 2:

我想你想只在您的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 ..



文章来源: UIActivityController behaviour different on device and simulator