处理MFMailComposeViewController不会恢复我对iPhone的旧看法,但可以在iPad上使用
我是iPhone/iPad开发新手,我使用的Unity3d插件有一些问题 该插件弹出一个MFMailComposeViewController,使用户能够从游戏中发送电子邮件。当用户完成后,窗口将消失,游戏将继续运行 这在iPad上可以正常工作,但在iPhone上却不行 在iPhone上删除窗口后,游戏将无法重新获得控制权。图形仍在渲染,但无法判断游戏是否仍在运行,或者它是否只是一个静态图像,因为它位于没有动态图形的菜单中 下面是一些如何完成此操作的代码:处理MFMailComposeViewController不会恢复我对iPhone的旧看法,但可以在iPad上使用,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我是iPhone/iPad开发新手,我使用的Unity3d插件有一些问题 该插件弹出一个MFMailComposeViewController,使用户能够从游戏中发送电子邮件。当用户完成后,窗口将消失,游戏将继续运行 这在iPad上可以正常工作,但在iPhone上却不行 在iPhone上删除窗口后,游戏将无法重新获得控制权。图形仍在渲染,但无法判断游戏是否仍在运行,或者它是否只是一个静态图像,因为它位于没有动态图形的菜单中 下面是一些如何完成此操作的代码: -(IBAction)launchEm
-(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;
}
阅读文档时,我只能假设is与此有关:
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;
}
您应该使用以下方式演示邮件生成器:
[self presentModalViewController:controller animated:YES];
在委托方法中,您应该调用:
[self dismissModalViewControllerAnimated:YES];
假设self是UIViewController我在代码中看到的添加ModalViewController的唯一不规则之处是[[self GetToApplication Window]addSubview:customUIViewController.view];你为什么这么做?这很可能是造成你的问题的原因。这是我正在使用的插件。我不是自己做的,我是Objective-C的初学者,所以我真的不知道为什么要这么做。我认为这是必要的,所以我没有试图删除它。我现在就这么做。这实际上是插件工作所必需的。由于该插件是从Unity3d调用的,因此我想我需要找到要附加到的正确窗口。您会找到它^^^但是如果您想看到一个工作的modalViewController原型,请在第一次编辑时检查这个问题。谢谢,我来看看: