我已经尝试过通过UIActivityViewController发送电子邮件,它工作得很好,但邮件视图在电子邮件发送后并未关闭。当用户按下Cancel按钮时,它也不会取消。
我能做些什么来解决这个问题?
//conf share view
NSString *textToShare = @"Teststring!";
UIImage *imageToShare = fetchedImage;
NSURL *urlToShare = [NSURL URLWithString:string_url];
NSArray *activityItems = [[NSArray alloc] initWithObjects:textToShare, imageToShare,urlToShare,nil];
UIActivity *activity = [[UIActivity alloc] init];
NSArray *applicationActivities = [[NSArray alloc] initWithObjects:activity, nil];
UIActivityViewController *activityVC =
[[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:applicationActivities];
activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact,
UIActivityTypePostToWeibo,
UIActivityTypeCopyToPasteboard,
UIActivityTypeSaveToCameraRoll,
UIActivityTypePrint];
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
NSLog(@"CompletionHandler was called!");
}];谢谢!
发布于 2012-10-25 09:12:39
我有解决方案。你想在你的基础中展示UIActivityViewController,也就是你的最高或最后一个视图控制器。在我的例子中,这是可行的:
[[[self parentViewController] parentViewController] presentViewController:activityViewController animated:YES completion:nil];试试看,在访问最高视图控制器之前,您必须调用parentViewController多少次。在我的简单的MasterView/DetailView应用程序中,我不得不调用它两次。
发布于 2013-08-29 15:04:54
无论成功与否,它总是在发布完成后出现在完成处理程序中
[activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed)
{
if (completed)
{
UIAlertView *objalert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Posting was successful" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[objalert show];
objalert = nil;
}else
{
UIAlertView *objalert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Posting was not successful" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[objalert show];
objalert = nil;
}
}];发布于 2012-10-14 22:04:46
然后试着在completitionHandler上忽略它
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
//Dismiss here
}];https://stackoverflow.com/questions/12882198
复制相似问题