cocos2d MFMailComposeViewController - PullRequest
       15

cocos2d MFMailComposeViewController

3 голосов
/ 15 сентября 2009

я пытался вставить почтовый инструмент в мое приложение .... мое приложение основано на движке cocos2d

Панель инструментов (вверху -> отменить, отправить ...) видна, но я не вижу других частей представления mfMailComposerViewController :-(

код:

-(void)displayComposerSheet {   
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"my message"];

// Set up recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"first@example.com"]; 
NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil]; 
NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com"]; 

[picker setToRecipients:toRecipients];
[picker setCcRecipients:ccRecipients];  
[picker setBccRecipients:bccRecipients];

// Attach an image to the email
UIImage *screenshot = [[Director sharedDirector] screenShotUIImage];
NSData *myData = UIImagePNGRepresentation(screenshot);
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"AdMotiv"]; 

// Fill out the email body text
NSString *emailBody = @"test";
[picker setMessageBody:emailBody isHTML:NO];
[[picker view] setFrame:CGRectMake(0.0f,0.0f,320.0f, 480.0f)];

[[picker view] setTransform:CGAffineTransformIdentity];
[[picker view] setBounds:CGRectMake(0.0f,0.0f,320.0f, 480.0f)];
//[[[VariableStore sharedInstance] parentView] setTransform: CGAffineTransformIdentity];
//[[[VariableStore sharedInstance] parentView] setBounds : CGRectMake(0.0f, 0.0f, 480.0f, 320.0f)];

UITextField *textfeld = [[UITextField alloc] initWithFrame:CGRectMake(50.0f, 50.0f, 100.0f, 100.0f)];
[[picker view] addSubview:textfeld];


[[[VariableStore sharedInstance] window]addSubview:picker.view];
[[[VariableStore sharedInstance] window] makeKeyAndVisible];


[picker release];
}

Ответы [ 4 ]

4 голосов
/ 15 августа 2010

хейуыы наконец. у меня это работает ... похоже, проблема в том, что некоторые анимации ... ... у меня сейчас так:

при инициализации:

emailController = [[UIViewController alloc] init]; [[[CCDirector sharedDirector] openGLView] addSubview: emailController.view];

при нажатии кнопки:

[[CCDirector sharedDirector] пауза]; [[CCDirector sharedDirector] stopAnimation];

MFMailComposeViewController * picker = [[MFMailComposeViewController alloc] в этом]; picker.mailComposeDelegate = самостоятельно;

[подборщик setSubject: @ "TEST"]; [подборщик setMessageBody: @ "JAJAJA" isHTML: YES];

[emailController presentModalViewController: комплектовщик анимированный: ДА]; [релиз сборщика];

метод делегата для MFMailComposeViewController

* * Тысяча двадцать-три - (недействительный) mailComposeController: (MFMailComposeViewController *) Контроллер didFinishWithResult: (MFMailComposeResult) результат ошибка: (NSError *) ошибка {[[CCDirector sharedDirector] резюме]; [[CCDirector sharedDirector] startAnimation];
[контроллер не dismissModalViewControllerAnimated: NO]; }
0 голосов
/ 13 января 2011

Для реализации функции электронной почты inApp требуется несколько шагов.

Шаг 1: добавьте MessageUI frameWork.

Step2: в файле .h #import "MessageUI / MessageUI.h". Также добавьте делегата MFMailComposeViewControllerDelegate, например, и UIViewController * emailMe;

Шаг 3: В файле .m Добавьте эти строки кода в функцию init

CCMenuItem *emailItem = [CCMenuItemFont itemFromString: @"Email"     target:selfselector:@selector(emailCallback)];
CCMenu *menu = [CCMenu menuWithItems: emailItem, nil];
    menu.position = ccp(50,50);
    [self addChild:menu];

    emailMe = [[UIViewController alloc] init];
[[[CCDirector sharedDirector] openGLView] addSubview:emailController.view];

шаг 4: добавьте эти методы в .m

-(void)emailCallback
{
    [[CCDirector sharedDirector] pause];
    [[CCDirector sharedDirector] stopAnimation];

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

    [picker setSubject:@"Email test "];
    [picker setMessageBody:@"finally its working " isHTML:YES];

    [emailMe presentModalViewController:picker animated:YES];
    [picker release];
}

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    [[CCDirector sharedDirector] resume];
    [[CCDirector sharedDirector] startAnimation];

    [controller dismissModalViewControllerAnimated:NO];
}

и запустите приложение, все готово:)

0 голосов
/ 23 мая 2010

Привет, я пытался с этим кодом и работает (не для анимации, я не знаю почему, но средство выбора удаляется правильно)

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

{
// [picker dismissModalViewControllerAnimated: YES]; [picker.view removeFromSuperview];

}

0 голосов
/ 10 января 2010

в последнем бите поменяйте селектор на себя, и он должен работать. что-то перепроверить, вы установили свой класс в качестве делегата? то есть MFMailComposeViewControllerDelegate в заголовке? если нет, то он не будет получать сообщения.

Кстати, это ответ на ваш вопрос, а не первоначальный вопрос.

...