Я пытаюсь включить MFMailComposeViewController
в свое приложение. Когда я представляю это модально, кнопка отправки работает нормально и отправляется электронное письмо, что означает, что результат, отправленный делегату, в этом случае прав.Лист действия не отображается при нажатии кнопки отмены MFMailComposeViewController
Принимая во внимание, что при нажатии кнопки отмены она приостанавливает приложение. В журнале также нет ошибок, только экран становится темным, и все отключается. По-видимому, результат не передается делегату (я проверил его через журналы). представляется, что
(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
не набирается при каждом нажатии кнопки отмены. Вероятно, именно поэтому таблица действий (Сохранить черновик, Отменить, удалить черновик) не отображается, и поэтому приложение висит прямо там.
Я использую точный код из примеров приложений Apple (MailComposer), он отлично работает там, но как-то не работает. :(
Пожалуйста, помогите мне, если кто-нибудь когда-нибудь по этому же вопросу, и успешно решить ее
Мой код:..
-(IBAction)emailButtonPressed:(id)sender{
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass != nil)
{
if ([mailClass canSendMail])
{
[self displayComposerSheet];
}
else
{
[self launchMailAppOnDevice];
}
}
else
{
[self launchMailAppOnDevice];
}
}
#pragma mark -
#pragma mark Compose Mail
-(void)displayComposerSheet
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Ilusiones"];
// Set up recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"];
[picker setToRecipients:toRecipients];
// Attach a screenshot to the email
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *myData = UIImagePNGRepresentation(viewImage);
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"viewImage"];
// Fill out the email body text
NSString *emailBody = @"";
[picker setMessageBody:emailBody isHTML:NO];
[self presentModalViewController:picker animated:YES];
[picker release];
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
switch (result)
{
case MFMailComposeResultCancelled:
NSLog(@"Result: canceled");
break;
case MFMailComposeResultSaved:
NSLog(@"Result: saved");
break;
case MFMailComposeResultSent:
NSLog(@"Result: sent");
break;
case MFMailComposeResultFailed:
NSLog(@"Result: failed");
break;
default:
NSLog(@"Result: not sent");
break;
}
[self dismissModalViewControllerAnimated:YES];
}
#pragma mark -
#pragma mark Workaround
-(void)launchMailAppOnDevice
{
NSString *recipients = @"mailto:[email protected][email protected],[email protected]&subject=illusions!";
NSString *body = @"&body=xyz";
NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
}
Я знаю, он отлично работает и с другими видами моего приложения. Но, по этому мнению, таблица действий никогда не появляется! Является ли это причиной того, что мой взгляд уже является модальным? – Anam 2010-11-25 09:42:56