Id нравится отслеживать, может ли пользователь использовать facebook, твиттер и т. Д., Но, похоже, нет способа узнать, какой метод был выбран. Здесь?UIActivityViewController - есть ли способ узнать, какая деятельность была выбрана?
ответ
Вы можете использовать типы активности в setCompletionHandler
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
if([activityType isEqualToString: UIActivityTypeMail]){
NSLog(@"Mail");
}
if([activityType isEqualToString: UIActivityTypePostToFacebook]){
NSLog(@"Facebook");
}
}];
[self presentViewController:activityVC animated:TRUE completion:nil];
Встраиваемых виды деятельности, для которых система имеет встроенные поддержку для.
NSString *const UIActivityTypePostToFacebook;
NSString *const UIActivityTypePostToTwitter;
NSString *const UIActivityTypePostToWeibo;
NSString *const UIActivityTypeMessage;
NSString *const UIActivityTypeMail;
NSString *const UIActivityTypePrint;
NSString *const UIActivityTypeCopyToPasteboard;
NSString *const UIActivityTypeAssignToContact;
NSString *const UIActivityTypeSaveToCameraRoll;
Edited для прошивки 8
Пожалуйста, обратите внимание, что это вызовет предупреждение компилятора в прошивке 8, вам нужно использовать метод setCompletionWithItemsHandler
вместо метода setCompletionHandler
.
Заменить:
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
с:
[activityVC setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
Спасибо, это полезно! Это хорошо, если мне нужно знать, что они выбрали впоследствии, что я и делаю, но мне также нужно знать заранее. Например, если кто-то нажал кнопку Twitter, я хочу отобразить другое сообщение, чем с Facebook. – Adam
Вам нужно будет реализовать свои пользовательские объекты данных, соответствующие протоколу 'UIActivityItemSource'. Затем вы можете представить свои данные в формате, специфичном для типа активности (или просто отслеживать тип). [NSHipster] (http://nshipster.com/uiactivityviewcontroller/) содержит все подробности. – hagi
только почтовая опция - дисплей? как можно добавить несколько опций? –
Вы можете использовать LIB https://github.com/rdougan/RDActivityViewController, чтобы определить, какая деятельность была затронута и возвращать пользовательские данные по активности только за счет реализации его протокола.
Like This:
- (NSArray *)activityViewController:(NSArray *)activityViewController itemsForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
return @[@"Twitter text"];
} else if ([activityType isEqualToString:UIActivityTypeMessage]) {
return @[@"Message text"];
} else if ([activityType isEqualToString:UIActivityTypeMail]) {
return @[@"Mail text"];
} else if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
return @[@"Facebook text"];
} else {
return @[@"Default text"];
}
}
Я надеюсь, что я помог вам!
Только что мое приложение отклонено из-за этого протокола. По-видимому, это частный API. Не используйте эту библиотеку. –
В Swift 2:
activityViewController.completionWithItemsHandler = { activity, success, items, error in
if !success{
print("cancelled")
return
}
if activity == UIActivityTypePostToTwitter {
print("twitter")
}
if activity == UIActivityTypeMail {
print("mail")
}
}
скор 3
let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: [screenCapture], applicationActivities: nil)
activityViewController.excludedActivityTypes = [UIActivityType.print, UIActivityType.postToWeibo, UIActivityType.copyToPasteboard, UIActivityType.addToReadingList, UIActivityType.postToVimeo]
activityViewController.completionWithItemsHandler = { activity, success, items, error in
if !success{
print("cancelled")
return
}
if activity == UIActivityType.postToFacebook {
print("facebook")
}
if activity == UIActivityType.mail {
print("mail")
}
}
self.present(activityViewController, animated: true, completion: nil)
Всегда приятно видеть вопрос, который я собирался спросить. – Morkrom