【问题标题】:How to know which icon is clicked in UIActivityViewController before activityController setCompletionHandleris called?在调用activityController setCompletionHandler之前如何知道UIActivityViewController中点击了哪个图标?
【发布时间】:2014-07-05 17:09:35
【问题描述】:

在调用activityController setCompletionHandler:^(NSString *activityType, BOOL completed)之前,如何知道UIActivityViewController中点击了哪个图标?

我想与 twitter 和 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
     {       
     }
 }];
}

【问题讨论】:

    标签: ios objective-c facebook twitter uiactivityviewcontroller


    【解决方案1】:

    如果您的目标是为 Twitter 或 Facebook 使用不同的文本,则由您的共享模型负责实现 UIActivityItemSource 协议。

    - (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";
    }
    

    【讨论】:

    • 我写了这个方法,但没有调用。
    • 你是这样创建 ActivityViewController 的吗? UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[YOUR_MODEL] applicationActivities:nil];
    • 您需要创建一个实现 UIActivityItemSource 协议的对象。 activityViewController:itemForActivityType 必须在这个对象中实现。您需要共享的是这个对象,而不是 posturl 字符串。
    • @EricD 这个方法没有被调用我的代码是=> UIActivityViewController *controller = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];那么如何调用此方法并检查按钮图标状态?
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多