IDは、ユーザーがFacebook、Twitterなどで共有しているかどうかを確認できるようにしたいが、どの方法が選択されたかわからない。ある?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];
に活動タイプを使用することができます。 iOSの8
のために編集
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;
これはiOSの8でコンパイラ警告が生成されますのでご注意ください、あなたの代わりにsetCompletionHandler
方法setCompletionWithItemsHandler
メソッドを使用する必要があります。
置き換えます
[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を使用することができます。このよう
:
- (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"];
}
}
私はあなたを助けている願っています!スウィフト2では
このプロトコルコールのため、ちょうど私のアプリが拒否されました。明らかにプライベートAPIです。このライブラリは使用しないでください。 –
:
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