#iphone #ipad
#iPhone #iPad
Вопрос:
Я делаю это, работая в симуляторе, но когда мы пытаемся открыть на устройстве, программа завершается.
Пожалуйста, предложите мне быстро.
MFMailComposeViewController *mail=[[MFMailComposeViewController alloc]init];
mail.mailComposeDelegate=self;
[mail setToRecipients:[NSArray arrayWithObjects:@"marketing@realestateinvestar.com.au",nil]];
//[self becomeFirstResponder];
mail.navigationBar.tintColor=[UIColor blackColor];
[self presentModalViewController:mail animated:YES];
Ответ №1:
if ([MFMessageComposeViewController canSendText])
Ваша проблема здесь. Вы пытаетесь проверить, сможет ли устройство отправлять текстовые сообщения, а не сообщения электронной почты. вы должны попробовать использовать
if([MFMailComposeViewController canSendMail])
Проблема может заключаться в том, что ваше устройство не настроено ни на какие учетные записи в почте.Пожалуйста, проверьте это один раз.
Комментарии:
1. Загрузите пример кода с developer.apple.com/library/ios/#samplecode/MailComposer /… и посмотрите, работает ли это на устройстве.
Ответ №2:
Реализовали ли вы методы MFMailComposeViewControllerdelegate в своем коде??
#pragma mark --------------------------------------------
#pragma mark MFMailComposeViewController delegate Methods
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
switch (result) {
case MFMailComposeResultCancelled:
NSLog(@"Mail send canceled.");
/*
Execute your code for canceled event here ...
*/
break;
case MFMailComposeResultSaved:
NSLog(@"Mail saved.");
/*
Execute your code for email saved event here ...
*/
break;
case MFMailComposeResultSent: {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Mail Sent" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
alert.tag = 1;
alert.delegate = self;
[alert show];
[alert release];
break;
}
case MFMailComposeResultFailed: {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Mail Sending Failed" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
alert.tag = 2;
alert.delegate = self;
[alert show];
[alert release];
break;
}
default:
break;
}
[controller dismissModalViewControllerAnimated:YES];//dismissing modal view controller
}
Комментарии:
1. вы проверили это? [MFMailComposeViewController может отправлять почту]
Ответ №3:
Ваш код выглядит нормально, но вы проверили, может ли устройство отправлять почту:
if ([MFMailComposeViewController canSendText]) {
MFMailComposeViewController *mail=[[MFMailComposeViewController alloc]init];
mail.mailComposeDelegate=self;
[mail setToRecipients:[NSArray arrayWithObjects:@"marketing@realestateinvestar.com.au",nil]];
mail.navigationBar.tintColor=[UIColor blackColor];
[self presentModalViewController:mail animated:YES];
[mail release], mail = nil;
} else {
// show message to the use that he can't send an email.
}
Комментарии:
1. Спасибо, но это снова заканчивается на устройстве, но не в симуляторе.
2. Пожалуйста, укажите сообщение об ошибке, версию устройства для iOS и трассировку стека.