How we should load the MFMailViewController in cocos2d ?

Posted by srikanth rongali on Stack Overflow See other posts from Stack Overflow or by srikanth rongali
Published on 2010-05-08T05:31:35Z Indexed on 2010/05/08 5:38 UTC
Read the original article Hit count: 438

I am writing an app in using cocos2d. This method I have written for the selector goToFirstScreen: . The view is in landscape mode. I need to send an email. So, I need to launch the MFMailComposeViewController. I need it in portrait mode.

But, the control is not entering in to viewDidLoad of the mailMe class. The problem is in goToScreen: method. But, I do not get where I am wrong ?

-(void)goToFirstScreen:(id)sender
{
    NSLog(@"goToFirstScreen: ");
    CCScene *Scene = [CCScene node];
    CCLayer *Layer = [mailME node];

    [Scene addChild:Layer];

    [[CCDirector sharedDirector] setAnimationInterval:1.0/60];
    [[CCDirector sharedDirector] pushScene: Scene];
}   

This is my mailMe class to launch mail controller

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
#import "cocos2d.h"

@interface mailME : CCLayer <MFMailComposeViewControllerDelegate> 
{
    UIViewController *mailComposer;
}

-(void)displayComposerSheet;
-(void)launchMailAppOnDevice;

@end  

#import "mailME.h"

@implementation  mailME


-(void)viewDidLoad
{
    NSLog(@"Enetrd in to mail");
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
    if (mailClass != nil)
    {
        if ([mailClass canSendMail])
        {
            [self displayComposerSheet];
        }
        else
        {
            [self launchMailAppOnDevice];
        }
    }
    else
    {
        [self launchMailAppOnDevice];
    }
} 


-(void)displayComposerSheet 
{
    CCDirector *director = [CCDirector sharedDirector];
    [director pause];
    [director stopAnimation];
    [director.openGLView setUserInteractionEnabled:NO];

    mailComposer = [[UIViewController alloc] init];
    [mailComposer setView:[[CCDirector sharedDirector]openGLView]];
    [mailComposer setModalTransitionStyle:UIModalTransitionStyleCoverVertical];

    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
     picker.mailComposeDelegate = self;

    [picker setSubject:@"Hello!"];

    NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
    [picker setToRecipients:toRecipients];

    NSString *emailBody = @"It is not working!";
    [picker setMessageBody:emailBody isHTML:YES];

    [mailComposer presentModalViewController:picker animated:NO];
    [picker release];
}

- (void)mailComposeController:(MFMailComposeViewController*)controller   didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{   
    switch (result)
    {
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSaved:
            break;
        case MFMailComposeResultSent:
            break;
        case MFMailComposeResultFailed:
            break;
        default:
            break;
    }
    [mailComposer dismissModalViewControllerAnimated:NO];

    [[UIApplication sharedApplication] setStatusBarOrientation:CCDeviceOrientationLandscapeLeft animated:NO];
    CCDirector *director = [CCDirector sharedDirector];
    [director.openGLView setUserInteractionEnabled:YES];
    [director startAnimation];
    [director resume];

    [mailComposer.view.superview removeFromSuperview];
}


-(void)launchMailAppOnDevice
{
    NSString *recipients = @"mailto:[email protected]?&subject=Hello!";
    NSString *body = @"&body=It is not working";

    NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
    email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
}

- (void)dealloc 
{
    [super dealloc];
}

@end

© Stack Overflow or respective owner

Related posts about cocos2d-iphone

Related posts about cocoa-touch