Я новичок в разработке для 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, поэтому я думаю, что мне нужно обрабатывать это по-разному в полноэкранном режиме?
Любая помощь будет принята с благодарностью.
С уважением,
Никлас
[EDIT]
После некоторого комментирования назад и вперед я решил добавить функцию для поиска 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;
}