1

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

4

3 に答える 3

2

ビューを手動で回転させることができます...:

CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90));

[picker.view setTransform:landscapeTransform];
于 2010-11-23T09:31:51.543 に答える
0

MFMailComposeViewControllerから派生した独自のメールコンポーザーを作成でき、関数shouldAutorotateToInterfaceorientationのみを上書きできます。私はこれを試しませんでした、ただあなたに考えを与えてください。

于 2010-11-25T14:47:44.283 に答える
0

誰が EmailScene オブジェクトを管理していますか? MVC パターンに従っている場合は、EmailScene ビューの viewController を使用して MFMailComposeViewController オブジェクトを提示してみてください。これは、View Controller ですべての向きをサポートしている場合に機能します。

使用する:

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

MFMailComposeViewController のビューをサブビューとして追加する代わりに。

編集: ルート ビュー コントローラーを使用して MFMailComposeViewController を提示してみてください。

于 2010-11-29T05:43:11.770 に答える