0

iPad 上的 UIActivityViewController 有问题

这是我的代码:

NSString* someText = @"Hi, I am using the official iEveryThing Tech app #iEveryTech";
        NSString* Website = [NSURL URLWithString:@"https://itunes.apple.com/us/app/ieverytech/id578148847?l=de&ls=1&mt=8"];
        NSArray* dataToShare = @[someText,Website];

        Class activityViewController = NSClassFromString(@"UIActivityViewController");

        if(activityViewController) {
            UIActivityViewController* activityViewController =
        [[UIActivityViewController alloc] initWithActivityItems:dataToShare
                                          applicationActivities:nil];
            [self presentViewController:activityViewController animated:YES completion:nil];}



        }

在 iPhone 上,Mail composer View 将在发送邮件后消失,但 iPad 上的 Composer 不会消失,这是我的 Composer:

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {

    if (error) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"error"

                                                        message:[NSString stringWithFormat:@"error %@", [error description]]

                                                       delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil, nil];

        [alert show];


        [self dismissModalViewControllerAnimated:YES];

    }

    else {

        [self dismissModalViewControllerAnimated:YES];

    }

}
4

2 回答 2

1

activityViewController 使用本机方法发送邮件不需要使用 mailComposeController,像这样

NSMutableArray *items = [NSMutableArray new];
    [items addObject:@"text for share"];
    [items addObject:[UIImage imageWithData:[NSData dataWithContentsOfFile:self.imagePath]]];

NSArray *activityItems = [NSArray arrayWithArray:items];

self.activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:[NSArray arrayWithObjects:whatsapp,instagram, nil]];

self.activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint,UIActivityTypeAirDrop,UIActivityTypeCopyToPasteboard];

[self presentViewController:self.activityVC animated:YES completion:nil];
于 2014-11-17T12:48:33.503 回答
0

首先,当使用 activityViewController 时,您的类不是邮件编写器的委托,并且不会调用代码。这一切都在 activityViewController 内部处理。

至于您的视图不会被关闭,请为 activityViewController 实现完整的块调用。在块中一定要关闭视图控制器。

于 2013-03-30T03:05:19.523 回答