Как я могу отобразить почтовый композитор в ландшафтном режиме, используя MFMailComposeViewController в cocos2d? - PullRequest
1 голос
/ 06 июля 2010

Я пишу игру в cocos2d. Я хочу добавить MFMailComposeViewController на сцену. Итак, когда я касаюсь CcLabel в сцене, открывается почтовый лист.

@interface EmailScene : CCScene <MFMailComposeViewControllerDelegate>
{
    MFMailComposeViewController *picker;
}

-(void)displayComposerSheet;

@end

@implementation EmailScene

- (id) init {

    self = [super init];
    if (self != nil) {
        [self displayComposerSheet];
    }
    return self;
}
-(void)displayComposerSheet
{

    [[CCDirector sharedDirector] pause];
    picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;

    NSArray *toRecipients = [NSArray arrayWithObject:@"srikanth.rongali786@gmail.com"]; 
[picker setToRecipients:toRecipients];

    [[[CCDirector sharedDirector] openGLView] addSubview:picker.view];
    [[CCDirector sharedDirector] stopAnimation];
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    [[CCDirector sharedDirector] resume];
    CCScene *Scene = [CCScene node];
    CCLayer *Layer = [GameWinScreen node];
    [Scene addChild:Layer];

    [picker.view removeFromSuperview];
    [[CCDirector sharedDirector] startAnimation];
    [picker dismissModalViewControllerAnimated:YES];
    [[CCDirector sharedDirector] replaceScene:Scene];
}

@end  

альтернативный текст http://www.freeimagehosting.net/uploads/4a77b9ceb9.png

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

И как мы можем изменить «отправлено с моего iPhone» на «Отправлено с моего iPad»

Спасибо.

альтернативный текст http://www.freeimagehosting.net/uploads/3eb39ea1de.png

Ответы [ 3 ]

2 голосов
/ 23 ноября 2010

Вы можете попробовать вручную повернуть вид ...:

CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90));

[picker.view setTransform:landscapeTransform];
0 голосов
/ 29 ноября 2010

Кто управляет вашим объектом EmailScene? Если вы следовали шаблону MVC, попробуйте представить объект MFMailComposeViewController, используя viewController представления EmailScene. Это будет работать, если вы поддержали все ориентации в контроллере вида.

Использование:

-(void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated

Вместо добавления представления MFMailComposeViewController в качестве подпредставления.

Редактировать: попробуйте представить MFMailComposeViewController с помощью корневого контроллера представления.

0 голосов
/ 25 ноября 2010

Вы можете создать свой собственный mailcomposer, производный от MFMailComposeViewController, и вы можете перезаписать только функцию shouldAutorotateToInterfaceorientation.Я не пробовал это, просто дать вам идею.

...