iOS 7中的UIActivityViewController选项不见了

3

我曾经使用以下代码来实现在iOS 6 SDK中使用UIActivityViewController:

-(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中,上述代码输出结果如下:
图片:https://istack.dev59.com/OfKgG.webp 早期分享菜单中没有Facebook和Twitter选项,但我在设置中登录了这两个应用程序后,它们开始出现在菜单中。
问题:下划线以下,只有复制等其他选项(书签、加入阅读列表、添加到主屏幕、打印和AirDrop)未显示。我该怎么做才能把它们带回来?谢谢!
更新:我已经使用下面的方案添加了打印按钮,如何添加其他选项?
3个回答

4
书签、添加到阅读列表和添加到主屏幕,只有在Safari浏览器中才可用,除非您自己定义。要添加这些按钮,您需要创建一个applicationActivities NSArray,其中包含各种服务的UIActivity对象。您可以将此数组传递到initWithActivityItems:applicationActivities: UIActivityViewController方法中(您之前为此参数传递了nil)。

你能否更新你的答案,加上添加所有这些内容的代码?我已经通过参考这个问题的另一个答案添加了打印按钮。谢谢! - AJ112
@AJ112 当您关注 @ArkadiuszHolko 的答案时,"添加到阅读列表"选项会自动添加。这可能还会添加“添加到主屏幕”,但我不确定。这些共享选项可能仅在Safari中可用。您只需使用NSURLNSString或许多其他数据类型(如图像)填充activityItems,然后菜单中就会出现其他选择。 - Andrew
好的,我已经使用了那个答案并且“添加到阅读列表”已经出现了。打印功能也和其他答案一起出现在这个问题上。只剩下书签和添加到主屏幕了。我该如何搞定它们呢?谢谢! - AJ112
@AJ112 我认为除了Safari之外的应用程序中不可能实现这些。 - Andrew
是我的错。打印和添加到阅读列表就足够了。我已经提供了一个应用程序,将其添加到主屏幕上没有任何意义,因为该应用程序已经存在。谢谢! - AJ112
@SantaClaus 我也遇到了同样的问题,无法找到 BOOKMARK、ADD TO READING LIST、ADD TO HOMESCREEN 和 PRINT 这些选项。请提供明确的解决方案。 - Rushi trivedi

3

您应该使用UISimpleTextPrintFormatter来显示打印内容:

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

跟随@Arkadiusz Holko和@Santa Claus的答案来添加另一个功能。


好的,我已经添加了您提供的代码并加入了打印按钮。那么如何添加剩下的内容呢?能否请您更新一下您的答案。谢谢! - AJ112
将UIActivityTypeAddToReadingList添加到数组中。 - LMVogel

1

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

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

使用

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

如果你想让除了“添加到阅读列表”之外的元素可见,那么请遵循 @Santa Claus 的建议。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接