Утилизация MFMailComposeViewController не вернет мой старый взгляд на iPhone, но работает на iPad - PullRequest
0 голосов
/ 07 октября 2011

Я новичок в разработке для 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;
}

1 Ответ

0 голосов
/ 07 октября 2011

Вы должны представить составителя почты, используя:

[self presentModalViewController:controller animated:YES];

и в своем методе делегата вы должны вызвать:

[self dismissModalViewControllerAnimated:YES];

все, предполагая, что self является UIViewController

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...