UIActivityViewController: как получить, если действие завершено или нет

Я использую UIActivityViewController в том, что я добавил facebook, твиттер и почту. После того, как я завершил работу с акциями, используя любую из этих функций, как я могу получить обратный вызов успеха.

Любые идеи могут быть оценены, enter image description here

Ответ 1

Синтаксис Swift:

let avc = UIActivityViewController(activityItems: [image], applicationActivities: nil)
avc.completionWithItemsHandler = { (activity, success, items, error) in
     print(success ? "SUCCESS!" : "FAILURE")
}

self.presentViewController(avc, animated: true, completion: nil)

Ответ 2

Установите обработчик завершения, подобный этому

[controller setCompletionHandler:^(NSString *act, BOOL success)
     {

         NSLog(@"act type %@",act);
         NSString *result = nil;

         if ( [act isEqualToString:UIActivityTypePostToTwitter] )  result = @"POST-SHARED-SUCCESSFULLY";
         if ( [act isEqualToString:UIActivityTypePostToFacebook] ) result = @"POST-SHARED-SUCCESSFULLY";

         if (success)
         {
             UIAlertView *av = [[UIAlertView alloc] initWithTitle:result message:nil delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil];
             [av show];
         }
         else
         {
             UIAlertView *av = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ERROR", nil) message:nil delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil];
             [av show];
         }
     }];

Ответ 3

setCompletionHandler устарела. Так что если вы используете iOS 8. 0+ вот решение.

activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
    // When the completed flag is YES, the user performed a specific activity
};