繁体   English   中英

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

[英]UIActivityController behaviour different on device and simulator

我将ActivityViewController如下所示添加到我的应用中,并传入图像

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

在模拟器上(推特,Facebook和微博帐户均未配置):

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

但在设备上:

在我的应用中:twitter,facebook和weibo仅显示是否配置了帐户。

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

我期望我的应用程序中的行为与野生动物园相同。 我是否缺少特定步骤?

好吧,我知道了问题所在。

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

以下将显示诸如邮件,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];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM