2013-10-12 41 views
2

我用下面的代码与iOS 6 SDK实现UIActivityViewController:UIActivityViewController在iOS中7缺少选项

-(IBAction)Share:(id)sender 
{  
    NSArray *activityItems = @[self.title, urlString]; 
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 

     [self presentViewController:activityVC animated:YES completion:nil]; 


    [activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) 
    { 
     NSLog(@"Activity = %@",activityType); 
     NSLog(@"Completed Status = %d",completed); 

     if (completed) 
     { 
      UIAlertView *objalert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Successfully Shared" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      [objalert show]; 
      objalert = nil; 
     } else 
     { 
      UIAlertView *objalert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Unable To Share" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      [objalert show]; 
      objalert = nil; 
     } 
    }]; 
} 

在IOS 7上面的代码是给我以下输出:

ios share facebook twitter uoactivityviewcontroller

此前在分享表中没有Facebook和Twitter,但我在Settings和Facebook和Twitter上都登录了这两个应用程序并开始出现。

问题:贝洛线,只有COPY和其他像BOOKMARK,添加到读取列表,添加到HOMESCREEN,打印和AirDrop按钮不显示。我能做些什么来带来这些?谢谢!

更新:我已经添加了打印按钮通过使用下面的一个答案,我怎么能添加其余的?

回答

4

书签,添加到阅读列表和添加到主屏幕仅在safari中可用,除非您自己定义它们。要添加这些按钮,您需要创建一个applicationActivitiesNSArray,为各种服务填充UIActivity对象。您可以将此数组传递给initWithActivityItems:applicationActivities:UIActivityViewController方法(您为此参数传递nil)。

+0

你可以用添加所有这些代码更新你的答案吗?我通过从这个问题的另一个答案中获得帮助,添加了打印按钮。谢谢! – AJ112

+0

@ AJ112当你按照@ArkadiuszHolko的答案时,会自动添加到阅读清单。这也可能会添加“添加到主屏幕”,但我不确定。这些分享选项可能只在Safari浏览器中可用。你应该可以用'NSURL','NSString'或许多其他数据类型(比如图像)填充'activityItems',然后其他选项就会出现在菜单中。 –

+0

好的,我已经使用了这个答案,并且“添加到阅读列表”已经出现。打印也与这个问题上的其他答案。只有书签和添加到主屏幕。我怎样才能带上这些?谢谢! – AJ112

1

当您需要将元素视为URL时,您应该使用NSURL对象而不是NSString。替换:

NSArray *activityItems = @[self.title, urlString]; 

NSArray *activityItems = @[self.title, [NSURL URLWithString:urlString]]; 

然后按照@Santa克劳斯的建议,如果你想比Add to Reading List其他元素是可见的。

2

您应该使用UISimpleTextPrintFormatter显示PRINT:

UISimpleTextPrintFormatter *printData = [[UISimpleTextPrintFormatter alloc] 
              initWithText:self.title]; 
NSArray *activityItems = @[self.title, printData]; 

关注@Arkadiusz Holko和@Santa克劳斯回答添加其他功能。

+0

好吧我添加了打印按钮与您提供的代码。我怎样才能补充其余的?你能更新你的答案吗?谢谢! – AJ112

+0

将UIActivityTypeAddToReadingList添加到数组 – LMVogel