2014-09-23 21 views
5

UIActivityViewControllercompletionHandler'un iOS 8'de kullanımdan kaldırılmasından bu yana, kullanıcı tarafından hangi paylaşım uzantısının/etkinliğin kullanıldığını belirlemenin herhangi bir yolu var mı? Eğer hangi öğeyi bilmekle ilgili merak ediyorsan, seni seçildi, AyrıcaHangi paylaşım uzantısının kullanıldığını belirleme

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

}]; 

: Böyle

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

Çağrı it:

cevap

14

Sadece yeni bir işleyici UIActivityViewControllerCompletionWithItemsHandler kullanmak gerekir aktivite öğelerinizin UIActivityItemSource protokolüne uygun olmasını sağlamanız yeterlidir;

UIActivityItemSource Protocol Documentation

+0

Hmm, garip. Apple, bu sadece doc diffs içinde dokümanlar söz değil ... Teşekkürler! – edc1591

1

setCompletionWithItemsHandler sadece iOS8 olduğunu. Sonra iOS6-7 desteklemek gerekirse:

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

}]; 
1

Biz Swift kullanılan budur:

... 

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