3

我有一个我正在使用的应用程序UIActivityViewController

这是我正在使用的代码。

 NSString *postText = @"My Text";
    NSArray *activityItems = @[postText];

    UIActivityViewController *activityController =
    [[UIActivityViewController alloc]
     initWithActivityItems:activityItems applicationActivities:nil];
    activityController.excludedActivityTypes = [NSArray arrayWithObjects:UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, nil];
    [self presentViewController:activityController
                       animated:YES completion:nil];

这工作正常。当我从 中打开 Twitter 或电子邮件时UIActivityViewController,它会显示我想要分享的文本,这很好。

但是,现在我只想在帖子成功或电子邮件发送成功时在我的数据库中执行一些操作。

我怎样才能做到这一点?

4

3 回答 3

14
    [activityController setCompletionHandler:^(NSString *act, BOOL done)
             {

                 NSLog(@"act type %@",act);
                 NSString *ServiceMsg = nil;
                 if ( [act isEqualToString:UIActivityTypeMail] )           ServiceMsg = @"Mail sent";
                 if ( [act isEqualToString:UIActivityTypePostToTwitter] )  ServiceMsg = @"Post on twitter, ok!";
                 if ( [act isEqualToString:UIActivityTypePostToFacebook] ) ServiceMsg = @"Post on facebook, ok!";

                 if ( done )
                 {
                     UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:ServiceMsg message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
                     [Alert show];
                     [Alert release];
                 }
                 else
                 {
                      // didn't succeed. 
                 }
             }];

使用完成处理程序的“完成”参数检查是否完成

于 2013-04-25T08:55:37.220 回答
4

completionHandler自 iOS 8.0 起已弃用。改为使用completionWithItemsHandler,在此处显示 Swift 示例:

let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil)
activityViewController.completionWithItemsHandler = { activity, success, items, error in
    if success {
        // Success handling here    
    }
}
于 2015-09-14T12:36:25.460 回答
2
 activityController.completionWithItemsHandler = ^(NSString *act, BOOL done, NSArray *returnedItems, NSError *activityError)

{
    NSString *ServiceMsg = nil;
    if ( [act isEqualToString:UIActivityTypeMail] ) ServiceMsg = @"Mail sended!";
    if ( [act isEqualToString:UIActivityTypePostToTwitter] )ServiceMsg = @"Post on twitter, ok!";
    if ( [act isEqualToString:UIActivityTypePostToFacebook] )ServiceMsg = @"Post on facebook, ok!";
    if ( [act isEqualToString:UIActivityTypeMessage] )ServiceMsg = @"SMS sended!";
    if ( done )
    {
        UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:ServiceMsg message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
        [Alert show];
    }
};
于 2015-09-04T12:45:08.567 回答