MFMessageComposeViewController取消button不起作用
我使用这个块发送消息给联系人,发送后,后退button在那里,但是当我触摸它什么都没有发生。 请帮我:)
-(IBAction) InviteIt:(id) sender{ if ([MFMessageComposeViewController canSendText]) { MFMessageComposeViewController *messageComposer = [[MFMessageComposeViewController alloc] init]; messageComposer.messageComposeDelegate = self; NSString *message = @"You have more body buddies than you think at: http://www.itunes.com/app/JoyChain "; [messageComposer setBody:message]; messageComposer.recipients = [NSArray arrayWithObjects:_itsnum, nil]; messageComposer.messageComposeDelegate = self; [self presentViewController:messageComposer animated:YES completion:nil]; } }
你忘了实现mailComposeController:didFinishWithResult:
?…
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { switch (result) { case MFMailComposeResultCancelled: NSLog(@"Mail cancelled"); break; case MFMailComposeResultSaved: NSLog(@"Mail saved"); break; case MFMailComposeResultSent: NSLog(@"Mail sent"); break; case MFMailComposeResultFailed: NSLog(@"Mail sent failure: %@", [error localizedDescription]); break; default: break; } // Close the Mail Interface [controller dismissViewControllerAnimated:YES completion:nil]; }
从苹果文档:
// The mail compose view controller delegate method - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { [self dismissModalViewControllerAnimated:YES]; }
但是,您可以根据您的目标处理所有情况…
正确的答案是设置控制器的messageComposeDelegate
,并定义下面的委托方法:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result { [self dismissModalViewControllerAnimated:YES]; if (result == MessageComposeResultCancelled) NSLog(@"Message cancelled"); else if (result == MessageComposeResultSent) NSLog(@"Message sent"); else NSLog(@"Message failed"); }
@ Doro的答案是基于MFMailComposeViewController
而不是MFMessageComposeViewController
如果有人需要,将MessageComposeDelegate方法翻译成Swift(3):
func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { controller.dismiss(animated: true) }