如何在cocos2d中使用MFMailComposeViewController以横向模式显示邮件编辑器?

时间:2010-07-06 06:58:17

标签: cocoa-touch cocos2d-iphone ipad mfmailcomposeviewcontroller

我正在用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  

alt text http://www.freeimagehosting.net/uploads/4a77b9ceb9.png

但问题是我的游戏处于横向模式。所以,我需要邮件表以横向模式显示。但是,此处邮件表以纵向模式显示。键盘以横向模式显示。但是,邮件沉着表处于纵向模式。

我们如何才能将“从我的iPhone发送”更改为“从我的iPad发送”

谢谢。

alt text http://www.freeimagehosting.net/uploads/3eb39ea1de.png

3 个答案:

答案 0 :(得分:2)

您可以尝试手动旋转视图...:

CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90));

[picker.view setTransform:landscapeTransform];

答案 1 :(得分:0)

您可以创建自己的从MFMailComposeViewController派生的mailcomposer,并且只能覆盖函数shouldAutorotateToInterfaceorientation。 我没试过,只是给你一个主意。

答案 2 :(得分:0)

谁在管理您的EmailScene对象?如果您已遵循MVC模式,请尝试使用EmailScene视图的viewController呈现MFMailComposeViewController对象。只要您支持视图控制器中的所有方向,这将起作用。

使用:

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

而不是将MFMailComposeViewController的视图添加为子视图。

编辑:尝试使用根视图控制器呈现MFMailComposeViewController。