【问题标题】:Quirk in UIActivityViewController integrationUIActivityViewController 集成中的怪癖
【发布时间】:2014-06-24 18:26:41
【问题描述】:

我在我的应用程序中集成了一个共享选项,一切看起来都很好,基本上我排除了除 Message、Twitter 和 Facebook 之外的所有类型的 UIActivity,当我测试它是否起作用时,我在文本框中看到的是

“我获得了新的高分!

com.apple.UIKit.activity.Message

com.apple.UIKit.activity.PostToFacebook

com.apple.UiKit.activity.PostToTwitter"。

文本出现在每个活动中。

无论如何要删除文本,还是应该这样?

这是我的 MainViewController 中的一个方法,它显示 UIActivityViewController。

-(void)sharedView {

APActivityProvider *APActivityPro = [[APActivityProvider alloc] init];

NSArray *activites = @[APActivityPro,UIActivityTypeMessage, UIActivityTypePostToFacebook, UIActivityTypePostToTwitter];

activityController = [[UIActivityViewController alloc] initWithActivityItems:activites applicationActivities:nil];

activityController.excludedActivityTypes = @[UIActivityTypePostToWeibo,
                                            UIActivityTypeMail,
                                            UIActivityTypePrint,
                                            UIActivityTypeCopyToPasteboard,
                                            UIActivityTypeAssignToContact,
                                            UIActivityTypeSaveToCameraRoll,
                                            UIActivityTypeAddToReadingList,
                                            UIActivityTypePostToFlickr,
                                            UIActivityTypePostToVimeo,
                                            UIActivityTypePostToTencentWeibo,
                                            UIActivityTypeAirDrop];

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

[activityController setCompletionHandler:^(NSString *activityType, BOOL completed)
 {

    if (completed)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@""
                                                        message:NSLocalizedString(@"Post Sent!",@"the confirmation of the sent message/post")
                                                       delegate:nil
                                              cancelButtonTitle:NSLocalizedString(@"OK",@"done")
                                              otherButtonTitles:nil];
        [alert show];
    }
}
 ]; 
}

还有我的 APActivityProvider.m 文件中的代码。

-(id) activityViewController:(UIActivityViewController*)activityViewController

     itemForActivityType:(NSString *)activityType

{

if ([activityType isEqualToString:UIActivityTypeMessage])
    
    return NSLocalizedString(@"I got a new highscore!",@"Comment for message");

if ([activityType isEqualToString:UIActivityTypePostToFacebook])
    
    return NSLocalizedString(@"I got a new highscore!",@"Comment for Facebook");

if ([activityType isEqualToString:UIActivityTypePostToTwitter])
    
    return NSLocalizedString(@"I got a new highscore!",@"Comment for twitter");

return nil;
}

- (id) activityViewControllerPlaceholderItem:(UIActivityViewController *)

activityViewController

{
return @"";
}

              

【问题讨论】:

  • 我认为我们需要查看一些源代码才能给您答案。
  • @onnoweb 我在与我的问题相关的代码中添加了。

标签: ios uiactivityviewcontroller


【解决方案1】:

您似乎在错误地使用 API。具体来说:

NSArray *activites = @[APActivityPro,UIActivityTypeMessage, UIActivityTypePostToFacebook, UIActivityTypePostToTwitter];

activityController = [[UIActivityViewController alloc] initWithActivityItems:activites applicationActivities:nil];

Activity Items 是您的内容(字符串、图像等),而 applicationItems 是您添加到默认系统选项的自定义活动选项(您编写的代码,例如在应用商店中打开的活动)。你不需要告诉 UIActivityViewController 你想要什么系统活动。全部默认启用。

有关如何使用此 API 的示例,我已包含以下内容:

NSNumber *AppStoreID = [NSNumber numberWithInt:550008982];

NSArray *activityItems =
@[ AppStoreID ];

NSArray *applicationActivities =
@[ [ATFAppStoreActivity alloc] ];

UIActivityViewController *activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:activityItems
                                  applicationActivities:applicationActivities];

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

在这里,我有我的子类 UIActivity (ATFAppStoreActivity),它采用 NSNumber 来显示该应用的 App Store 页面。

【讨论】:

  • 谢谢,它完全解决了我的问题。如果我真的有足够的代表,我会投票。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
相关资源
最近更新 更多