2009-09-15 3 views
3

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

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

код:.

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

// Set up recipients 
NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

[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]; 
} 
+0

Hi, У меня тоже такая же проблема. Мой контроль даже не входит в почтовый контроллер. Я использовал селектор в cocos2d для отображения контроллера почты. - (void) goToFirstScreen: (id) отправитель { CCScene * Сцена = [узел CCScene]; CCLayer * Layer = [узел mailME]; [Сцена addChild: Layer]; [[CCDirector sharedDirector] setAnimationInterval: 1.0/60]; [[CCDirector sharedDirector] pushScene: Сцена]; } mailMe - это имя класса почтового контроллера. Я думаю, что это неправильно. Как добавить его в cocos2d? Спасибо. –

ответ

0

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

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

0

Привет Я пытался с этим кодом и работает (не для анимации, я don'know почему, но сборщика правильно удален :)

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

{
// [сборщика dismissModalViewControllerAnimated: YES] ; [picker.view removeFromSuperview];

4

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

на INIT:

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

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

[[CCDirector sharedDirector] pause]; [[CCDirector sharedDirector] stopAnimation];

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

[picker setSubject:@"TEST"]; [picker setMessageBody:@"JAJAJA" isHTML:YES];

[emailController presentModalViewController:picker animated:YES]; [picker release];

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

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

+0

работает без проблем, спасибо Kukosk :) – Rushabh

0

Несколько шагов, необходимых для реализации функциональных возможностей электронной почты InApp.

Этап 1: Добавить фреймворк MessageUI.

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

Step3: В файле .m Добавьте эти строки кода в функции инициализации

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: добавить эти методы в .м

-(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

это не работает для меня – priya

+0

@PriyaKerala: это вообще не работает? немного уточните. – aToz

+0

Я использовал этот код, а затем мой симулятор показывает пустой экран, ничего не связанного с почтой, становится отображаемым – priya

Смежные вопросы