Ios 如何检测已选择的活动以及如何检查消息是否已发送?

Ios 如何检测已选择的活动以及如何检查消息是否已发送?,ios,cocoa,touch,share,uiactivityviewcontroller,Ios,Cocoa,Touch,Share,Uiactivityviewcontroller,我有一些代码,可以从应用程序中简单地共享一些消息 UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[message] app

我有一些代码,可以从应用程序中简单地共享一些消息

UIActivityViewController *activityViewController = [[UIActivityViewController alloc]
                                                    initWithActivityItems:@[message]
                                                    applicationActivities:nil];

activityViewController.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll];
[self presentViewController:activityViewController animated:YES completion:nil];
问题:

  • 是否可以检测已选择的共享选项
  • 是否可以检测到消息之前是否已共享或取消

  • 提前感谢。

    您需要实现
    UIActivityViewControllerCompletionHandler
    ,在这里您可以看到用户做了什么或他们是否取消了操作。

    以下是如何使用
    UIActivityViewControllerCompletionHandler
    的示例:

    UIActivityViewController *activityViewController = [[UIActivityViewController alloc]
                                                        initWithActivityItems:@[@"abc", someImage]
                                                        applicationActivities:nil];
    
    [activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed) {
        NSLog(@"%@, %d", activityType, completed);
    }];
    
    activityViewController.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll];
    [self presentViewController:activityViewController animated:YES completion:nil];
    

    在iOS8中,completionHandler属性不推荐使用。改用completionWithItemsHandler属性:

    activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
    NSLog(@"completed    = '%@'", (completed) ? @"YES" : @"NO");
    NSLog(@"activityType = '%@'", activityType);
    };
    

    所以你问了一个问题,得到了让你解决问题的答案,然后用一些代码添加了你自己的答案,然后决定选择你的答案作为“正确”答案?嗯,只是以前从没见过。您无法奖励自己的分数,但决定了奖励不应授予任何人的少数分数?这对于iOS 8(从beta 5开始)不再可行,
    completionHandler
    属性已被弃用。UIActivityViewController有一个新的completionWithItemsHandler属性,该属性不在文档中,但在API Diff中,并且是在UIActivityViewController.h中定义的。很好,它可以工作,但是它来自哪里?它不在文档中…@Guy:它是在UIActivityViewController.h中定义的。我向苹果公司提交了一份雷达报告,以便将其添加到文档中。