首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIActivityViewController驳回MailViewController

UIActivityViewController驳回MailViewController
EN

Stack Overflow用户
提问于 2012-10-14 20:28:33
回答 3查看 8.9K关注 0票数 7

我已经尝试过通过UIActivityViewController发送电子邮件,它工作得很好,但邮件视图在电子邮件发送后并未关闭。当用户按下Cancel按钮时,它也不会取消。

我能做些什么来解决这个问题?

代码语言:javascript
复制
//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!");
    }];

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-25 09:12:39

我有解决方案。你想在你的基础中展示UIActivityViewController,也就是你的最高或最后一个视图控制器。在我的例子中,这是可行的:

代码语言:javascript
复制
[[[self parentViewController] parentViewController] presentViewController:activityViewController animated:YES completion:nil];

试试看,在访问最高视图控制器之前,您必须调用parentViewController多少次。在我的简单的MasterView/DetailView应用程序中,我不得不调用它两次。

票数 8
EN

Stack Overflow用户

发布于 2013-08-29 15:04:54

无论成功与否,它总是在发布完成后出现在完成处理程序中

代码语言:javascript
复制
[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;
     }
 }];
票数 4
EN

Stack Overflow用户

发布于 2012-10-14 22:04:46

然后试着在completitionHandler上忽略它

代码语言:javascript
复制
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
       //Dismiss here 
    }];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12882198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档