I am using UIActivityViewController
to share some text and url which works great when sending some text and a url.
I currently need to use the completion handler to perform additional actions depending whether the user cancelled the UIActivityViewController
or actually sent something.
The completion handler (activityViewController.completionHandler
for iOS 7 is deprecated in iOS 8 which is now activityViewController setCompletionWithItemsHandler
) returns a BOOL completed
value which correctly returns true
when sending with email
sms
Facebook
Twitter
however when sending via Airdrop
the user must press Cancel
to dismiss the UIActivityViewController
once sent and thus I always receive a false
from the completion handler.
Does anyone know if there's a way of knowing that the user has sent using Airdrop
when the UIActivityViewController
is dismissed?
Thanks
I've found something of interest for you but unfortunately I couldn't test it as AirDrop didn't want to function between my iDevices. Sorry about that.
Anyway, you could try setCompletionWithItemsHandler
checking for activityType
:
[activityViewController setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
NSLog(@"completed: %@, \n%d, \n%@, \n%@,", activityType, completed, returnedItems, activityError);
}];
If activityType
is of type com.apple.airdrop.etc
(just a guess) then the user has tapped on the icon. Hope it can help.
来源:https://stackoverflow.com/questions/26425077/uiactivityviewcontroller-completion-handler-is-completed-when-using-airdrop