确定使用哪个共享扩展

由于UIActivityViewController上的completionHandler在iOS 8中已被弃用,是否有任何方法可以确定用户使用哪个共享扩展/活动?

你只需要使用新的处理程序UIActivityViewControllerCompletionWithItemsHandler

 typedef void (^UIActivityViewControllerCompletionWithItemsHandler)(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError); 

像这样调用它:

 [yourActivityVC setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError){ }]; 

另外,如果您想知道select哪个项目,您只需要确保您的活动项目符合UIActivityItemSource协议;

UIActivityItemSource协议文档

setCompletionWithItemsHandler只是iOS8。 如果你需要支持iOS6-7,那么:

 [yourActivityVC setCompletionHandler:^(NSString *activityType, BOOL completed){ }]; 

这就是我们在Swift中使用的:

  ... // Configure UIActivityViewController let activityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil) activityViewController.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard] // Show UIActivityViewController presentViewController(activityViewController, animated: true, completion: nil) // Define completion handler activityViewController.completionWithItemsHandler = doneSharingHandler ... func doneSharingHandler(activityType: String?, completed: Bool, returnedItems: [AnyObject]?, error: NSError?) { // Return if cancelled if (!completed) { return } // If here, log which activity occurred println("Shared video activity: \(activityType)") }