2010-04-04 3 views
0

У меня есть немного странная проблема. Я пытаюсь отправить электронную почту в приложении. Я также использую Cocos2d. Он работает, поскольку я получаю почтовое окно, и я могу отправлять почту, но он очень медленный. Кажется, он принимает только каждую секунду. Я проверил использование процессора, и он довольно низок. Я остановил своего режиссера, так что ничего больше не должно было случиться. Есть идеи? Я вытаскиваю волосы.Чрезвычайно медленный MFMailComposeViewControllerDelegate

Я посмотрел на некоторые примеры и сделал следующее:

Сделано моя сцена почтовый делегат:

@interface MyLayer : CCLayer <MFMailComposeViewControllerDelegate> { 
    ... 
} 

и реализованы следующие функции в сценах:

-(void) showEmailWindow: (id) sender { 
    [[CCDirector sharedDirector] pause]; 

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

    [picker setSubject: @"My subject here"]; 

    NSString *emailBody = @"<h1>Here is my email!</h1>"; 

    [picker setMessageBody:emailBody isHTML:YES]; 

    [myMail presentModalViewController:picker animated:NO]; 
    [picker release]; 

} 

Я также реализовал mailComposeController для обработки обратного вызова.

ответ

0

На форуме cocos2d (http://www.cocos2d-iphone.org/forum), CJ помог мне.

Важной частью было то, что я не звонил [dicector stopAnimation], но были и другие хорошие бит.

теперь я это сделать, прежде чем я presentModalViewController:

CCDirector *director = [CCDirector sharedDirector]; 
[director pause]; 
[director stopAnimation]; 
[director.openGLView setUserInteractionEnabled:NO]; 

А потом, когда я получаю обратный вызов, в mailComposeController, я делаю это в конце:

CCDirector *director = [CCDirector sharedDirector]; 
[director.openGLView setUserInteractionEnabled:YES]; 
[director startAnimation]; 
[director resume]; 

[myMail.view.superview removeFromSuperview]; 

Надеется, что это помогает кому-то еще.