我是iPhone / iPad开发的新手,我在使用Unity3d的插件时遇到了一些问题。
该插件弹出MFMailComposeViewController,并允许用户从游戏中发送电子邮件。用户完成后,窗口应该消失,游戏继续运行。
这适用于iPad,但不适用于iPhone。
在iPhone上移除窗口后,游戏无法重新获得控制权。图形仍然呈现,但无法判断游戏是否仍在运行或是否只是静止图像(因为它位于没有动态图形的菜单中)
以下是一些如何完成此操作的代码:
-(IBAction)launchEmailView:(NSString*)address subject:(NSString*)subject message:(NSString*)message {
customUIViewController = [[InAppEmailViewController alloc] init];
[[self getTopApplicationWindow] addSubview:customUIViewController.view];
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
[controller setSubject:subject];
[controller setToRecipients:[NSArray arrayWithObject:address]];
[controller setMessageBody:message isHTML:NO];
[controller.navigationBar setTintColor:[UIColor redColor]];
[customUIViewController presentModalViewController:controller animated:YES];
controller.mailComposeDelegate = self;
[controller release];
}
-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
[customUIViewController dismissModalViewControllerAnimated:YES];
[customUIViewController.view removeFromSuperview];
[customUIViewController release];
controller = nil;
}
阅读文档我只能假设这与此有关:
presentModalViewController:动画: 向用户显示由给定视图控制器管理的模态视图。
在iPhone和iPod touch设备上,modalViewController的视图始终以全屏显示。在iPad上,演示文稿取决于modalPresentationStyle属性中的值。
问题不在于iPad,所以我的猜测是我需要以全屏方式处理这个问题?
非常感谢任何帮助。
此致 尼古拉斯
[编辑]
经过一些评论来回后,我决定添加查找topWindow的功能
-(UIWindow*)getTopApplicationWindow
{
UIApplication* clientApp = [UIApplication sharedApplication];
NSArray* windows = [clientApp windows];
UIWindow* topWindow = nil;
if (windows && [windows count] > 0)
topWindow = [[clientApp windows] objectAtIndex:0];
return topWindow;
}
答案 0 :(得分:0)
您应该使用以下方式展示邮件编辑器:
[self presentModalViewController:controller animated:YES];
在您的委托方法中,您应该致电:
[self dismissModalViewControllerAnimated:YES];
假设self
是UIViewController