7

UIActivityViewControllerを介して電子メールを送信しようとしましたが、正常に機能しますが、電子メールが送信された後、メールビューが閉じられません。また、ユーザーが[キャンセル]ボタンを押しても却下されません。

問題を解決するにはどうすればよいですか?

ここに私が使用したコードがあります:

//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!");
    }];

ありがとう!

4

3 に答える 3

8

私には解決策があります。UIActivityViewControllerを基本、つまり最高または最後のビューコントローラーに表示する必要があります。私の場合、これはうまくいきました:

[[[self parentViewController] parentViewController] presentViewController:activityViewController animated:YES completion:nil];

最高のViewControllerにアクセスするまで、parentViewControllerを何回呼び出す必要があるか試してみてください。単純なMasterView/DetailViewアプリでは、2回呼び出す必要がありました。

于 2012-10-25T01:12:38.547 に答える
4

投稿が完了した後、それは常にこの完了ハンドラーに入ります天気が成功したかどうか

[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;
     }
 }];
于 2013-08-29T07:04:53.920 に答える
2

次に、completitionHandlerでそれを却下してみてください

[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
       //Dismiss here 
    }];
于 2012-10-14T14:04:46.367 に答える