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