0

How to know which icon is clicked in UIActivityViewController before activityController setCompletionHandler:^(NSString *activityType, BOOL completed) is called ?

I want to share different text for sharing with twitter and facebook.

-(IBAction)btnSharePressedFromOffersDetail:(id)sender
{
NSString *posturl= @"facebook or twitter";
UISimpleTextPrintFormatter *printData = [[UISimpleTextPrintFormatter alloc]init];
NSArray *Itemsarray=@[posturl,printData];
UIActivityViewController *activityController = [[UIActivityViewController alloc]initWithActivityItems:Itemsarray applicationActivities:nil];
[self presentViewController:activityController
                   animated:YES completion:nil];
[activityController setCompletionHandler:^(NSString *activityType, BOOL completed)
{
     NSLog(@"Activity = %@",activityType);
     NSLog(@"Completed Status = %d",completed);  
     if (completed)
     {
         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@""
                                                         message:@"Thanks for sharing!"
                                                        delegate:nil
                                              cancelButtonTitle:@"OK"
                                               otherButtonTitles:nil];
         [alert show];
     }
     else
     {       
     }
 }];
}
souvickcse
  • 7,742
  • 5
  • 37
  • 64
Rushi trivedi
  • 737
  • 1
  • 15
  • 37

2 Answers2

2

If your goal is to use a different text for Twitter or Facebook, it's the responsability of your shared Model who implement the UIActivityItemSource protocol.

- (id) activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
    if([activityType isEqualToString:UIActivityTypePostToFacebook]) return @"Facebook text";
    else if([activityType UIActivityTypePostToTwitter]) return @"Twitter text";
    else return @"Default text";
}
EricD
  • 587
  • 6
  • 22
  • i wrote this method but not called. – Rushi trivedi May 17 '14 at 09:14
  • Do you create your ActivityViewController like this ? UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[YOUR_MODEL] applicationActivities:nil]; – EricD May 17 '14 at 09:31
  • You need to create an object who implement the UIActivityItemSource protocol. The activityViewController:itemForActivityType had to be implemented in this object. It's this object you need to share, not the posturl string. – EricD May 17 '14 at 09:47
  • @EricD this method is not called my code is=> UIActivityViewController *controller = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil]; so how can i call this method and check button icon state ? – ramesh bhuja Apr 25 '16 at 07:59
1

You can go with link given below, there is tutorial which might helps you.

https://www.albertopasca.it/whiletrue/objective-c-custom-uiactivityviewcontroller-icons-and-text/

and http://nshipster.com/uiactivityviewcontroller/

elp
  • 8,021
  • 7
  • 61
  • 120
Chitra Khatri
  • 1,260
  • 2
  • 14
  • 31