确定使用哪个共享扩展
由于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)") }