【问题标题】:MFMessageComposeViewController not returning to application after send message ios9发送消息ios9后MFMessageComposeViewController未返回应用程序
【发布时间】:2015-09-21 04:06:22
【问题描述】:

之前在 iOS7 上,我测试了我的 SMS 模块,它运行良好。更新iOS版本后,发现短信模块有问题。

在我的 .h 文件中

#import <MessageUI/MFMessageComposeViewController.h>

@interface ViewController : UIViewController<UITextFieldDelegate,MFMessageComposeViewControllerDelegate>

在我的 .m 文件中

- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
    if([MFMessageComposeViewController canSendText])
    {
        controller.body = bodyOfMessage;
        controller.recipients = recipients;
        controller.messageComposeDelegate = self;
        [self presentModalViewController:controller animated:YES];
    }
}

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    if (result == MessageComposeResultCancelled){
        NSLog(@"Message cancelled");
    }
    else if (result == MessageComposeResultSent){
        NSLog(@"Message sent");
    }
    else{
        NSLog(@"Message failed");
    }
}

按发送后,日志中显示“已发送消息”,但视图仍在消息屏幕上。我不知道为什么它不会回到我的应用程序。

需要帮助找出为什么它不会返回到我的应用程序的问题。

提前致谢。

【问题讨论】:

  • 在你完成委托消息中关闭你的控制器ComposeViewController:didFinishWithResult:

标签: ios mfmessagecomposeview


【解决方案1】:

您似乎并没有在 mailcomposer 出现后将其拒之门外。您必须通过以下方法关闭提供的MFMessageComposeViewController

-(void)mailComposeController:(MFMailComposeViewController *)controller
         didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{
    if (result == MessageComposeResultCancelled){
        NSLog(@"Message cancelled");
    }
    else if (result == MessageComposeResultSent){
        NSLog(@"Message sent");
    }
    else{
        NSLog(@"Message failed");
    }
    [self dismissViewControllerAnimated:YES completion:nil]; //<---- This line
}

此外,- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated 自 iOS 6 起已弃用。请改用 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion,如下所示:

[self presentViewController:mailComposer animated:YES completion:nil];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 2022-08-16
    • 1970-01-01
    • 2021-06-19
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    相关资源
    最近更新 更多