私はを使おうとしていますがUIActivityViewControllerCompletionHandler
、どうすればいいのかわかりません。
ユーザーがこのViewControllerを終了または終了したときを検出したい(UIActivityViewController
)。
誰もが方法を知っていますか?
私はを使おうとしていますがUIActivityViewControllerCompletionHandler
、どうすればいいのかわかりません。
ユーザーがこのViewControllerを終了または終了したときを検出したい(UIActivityViewController
)。
誰もが方法を知っていますか?
共有ダイアログを表示し、その完了ハンドラを設定する方法は次のとおりです
NSArray *imageArray = [NSArray arrayWithObject:shareImage];
UIActivityViewController *sharing = [[UIActivityViewController alloc] initWithActivityItems:imageArray applicationActivities:nil];
[sharing setCompletionHandler:^(NSString *activityType, BOOL completed) {
NSLog(@"completed dialog - activity: %@ - finished flag: %d", activityType, completed);
}];
[self presentViewController:sharing animated:YES completion:nil];
iOS 8completionHandler
では非推奨になっているため、代替手段を提供する必要がありますcompletionWithItemsHandler
。また、拡張機能が設定したデータを変更したかどうかを処理することもできます (写真拡張機能など)。ドキュメントを見る
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[text, URL, image] applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeAirDrop, UIActivityTypeAddToReadingList];
// check if new API supported
if ([activityViewController respondsToSelector:@selector(completionWithItemsHandler)]) {
activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
// When completed flag is YES, user performed specific activity
};
} else {
activityViewController.completionHandler = ^(NSString *activityType, BOOL completed) {
// When completed flag is YES, user performed specific activity
};
}
typedef void (^UIActivityViewControllerCompletionHandler)
(NSString *activityType, BOOL completed);
完了ハンドラーの 2 番目のパラメーターは、ユーザーがコントローラーを閉じたかどうかを示します。彼らがコントローラを却下した場合、completed
は に設定されNO
ます。
詳細については、完了ハンドラのドキュメントを参照してください。