Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理MFMailComposeViewController不会恢复我对iPhone的旧看法,但可以在iPad上使用_Iphone_Objective C_Ipad - Fatal编程技术网

处理MFMailComposeViewController不会恢复我对iPhone的旧看法,但可以在iPad上使用

处理MFMailComposeViewController不会恢复我对iPhone的旧看法,但可以在iPad上使用,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我是iPhone/iPad开发新手,我使用的Unity3d插件有一些问题 该插件弹出一个MFMailComposeViewController,使用户能够从游戏中发送电子邮件。当用户完成后,窗口将消失,游戏将继续运行 这在iPad上可以正常工作,但在iPhone上却不行 在iPhone上删除窗口后,游戏将无法重新获得控制权。图形仍在渲染,但无法判断游戏是否仍在运行,或者它是否只是一个静态图像,因为它位于没有动态图形的菜单中 下面是一些如何完成此操作的代码: -(IBAction)launchEm

我是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;
}
阅读文档时,我只能假设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原型,请在第一次编辑时检查这个问题。谢谢,我来看看: