UIActivityViewControllerCompletionHandler如何?

Obl*_*pps 24 objective-c event-handling cocos2d-iphone ios6

我正在尝试使用UIActivityViewControllerCompletionHandler ,但我不知道如何...

我想检测用户何时完成或关闭此视图控制器(UIActivityViewController).

谁知道怎么样?

thg*_*hgc 67

以下是显示共享对话框并设置其完成处理程序的方法

NSArray *imageArray = [NSArray arrayWithObject:shareImage];

UIActivityViewController *sharing = [[UIActivityViewController alloc] initWithActivityItems:imageArray applicationActivities:nil];

[sharing setCompletionHandler:^(NSString *activityType, BOOL completed) {
    NSLog(@"completed dialog - activity: %@ - finished flag: %d", activityType, completed);
}];

[self presentViewController:sharing animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

  • 嘿伙计,我怎么知道我是否成功发帖?因为即使帖子确实失败了,"完成"仍然是Yes/1 (2认同)
  • iOS8不推荐使用此方法。 (2认同)

Ant*_*nko 21

iOS 8 completionHandler弃用,因此您需要提供替代方案completionWithItemsHandler.它还允许处理您设置的扩展修改数据(例如Photo Extension).见文档

    UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[text, URL, image] applicationActivities:nil];
    activityViewController.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeAirDrop, UIActivityTypeAddToReadingList];

    // check if new API supported
    if ([activityViewController respondsToSelector:@selector(completionWithItemsHandler)]) {
        activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
            // When completed flag is YES, user performed specific activity
        };
    } else {
        activityViewController.completionHandler = ^(NSString *activityType, BOOL completed) {
            // When completed flag is YES, user performed specific activity
        };
    }
Run Code Online (Sandbox Code Playgroud)


sob*_*bri 19

typedef void (^UIActivityViewControllerCompletionHandler)
    (NSString *activityType, BOOL completed);
Run Code Online (Sandbox Code Playgroud)

完成处理程序的第二个参数告诉您用户是否解除了控制器.如果他们解雇了控制器,completed将被设置为NO.

完成处理程序的文档中有更多详细信息.