想要在iPhone通过UIActivityViewController成功发布帖子时执行某些操作

Man*_*han 3 iphone xcode objective-c ios uiactivityviewcontroller

我正在使用我正在使用的应用程序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];
Run Code Online (Sandbox Code Playgroud)

这很好用.当我打开Twitter或电子邮件时UIActivityViewController,它显示我想要分享的文本,这很好.

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

我怎样才能做到这一点?

nsu*_*ger 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. 
                 }
             }];
Run Code Online (Sandbox Code Playgroud)

使用完成处理程序的"完成"参数来检查是否已完成