Вызовите MFMailComposeViewController непосредственно после UIImagePickerController

Я пытаюсь, чтобы диалог электронной почты отображался сразу после того, как кто-то выбрал фотографию с помощью UIImagePickerController. Я не могу заставить его всплыть сразу после этого. Я делаю что-то неправильно? В конце концов у меня будет фотография, которая будет приложением, но это не самая сложная часть. Я могу сделать так, чтобы электронная почта и фото-модалы показывались по отдельности, но не автоматически. Спасибо!

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
// Hide the dialouge
[picker dismissModalViewControllerAnimated:YES];
[self becomeFirstResponder];

MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"test"];
[controller setMessageBody:@"test" isHTML:NO];

[self presentModalViewController:controller animated:YES];

}

1 ответ

Решение

Потому что вы используете анимацию, чтобы скрыть средство выбора изображений.

UIImagePickerController фактически не отклоняется, когда вы пытаетесь представить свой MFMailComposeViewController, поэтому вы получаете ошибку.

Вы можете просто изменить свой код

[picker dismissModalViewControllerAnimated:YES];

в

[picker dismissModalViewControllerAnimated:NO]; // (set Animated to "NO") 

обойти эту проблему.

PS Я также не уверен, почему вы добавляете

[self becomeFirstResponder];

там, но, кажется, не нужно.

Другие вопросы по тегам