2014-09-23 1 views
5

completionHandler은 iOS 8에서 사용되지 않으므로 사용자가 어떤 공유 확장/활동을 사용했는지 확인할 수있는 방법이 있습니까? 당신은 어떤 항목을 알고에 대해 궁금해하는 경우, 당신을 선택했다, 또한어떤 공유 확장자가 사용되었는지 확인

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

}]; 

이 같은

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

전화를 :

답변

14

당신은 새로운 핸들러 UIActivityViewControllerCompletionWithItemsHandler를 사용할 필요가 귀하의 활동 항목이 UIActivityItemSource 프로토콜을 준수하는지 확인해야합니다.

UIActivityItemSource Protocol Documentation

+0

흠, 이상한. 애플은 API diffs에서만 문서에서 이것을 언급하지 않는다 ... 고마워! – edc1591

1

setCompletionWithItemsHandler에만 iOS8의입니다. 당신이 다음 iOS6-7를 지원해야하는 경우 :

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

}]; 
1

이것은 우리가 스위프트에 사용되는 것입니다 :

... 

    // 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)") 
}