繁体   English   中英

iOS:在“消息”应用中点按“取消”以返回调用它的应用

[英]iOS: Tap cancel in Messages app to go back to app that invoked it

我们的团队经理提出了以下想法:在我们的应用程序中,当用户点击“ Send Msg按钮时,我们的应用程序将打开“消息”应用程序。 我们的经理想要点击“ Cancel以返回到我们的应用程序(请参见下面的屏幕截图),而不是点击左上方的状态栏中的Go back to ...快捷方式。 那可能吗?

这是图片: 红框展示

更新 messageComposeViewController委托方法是这样的,当我关闭消息控制器时,我会有些发抖?

#pragma mark - sms delegate

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
                 didFinishWithResult:(MessageComposeResult)result {

    switch (result)
    {
        case MessageComposeResultCancelled:

            break;
        case MessageComposeResultSent:

            break;
        case MessageComposeResultFailed:

            [LMLSendResultAlert showSuccessOrFail:0 withSuccesString:@"" andFailStr:@"短信发送失败" needPopOrdismiss:0 complete:nil];
            break;
        default:

            break;
    }
    [controller dismissViewControllerAnimated:YES completion:NULL];
}

这是我的viewWillAppear方法:

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController.navigationBar setHidden:YES];
}

如果要从外部打开消息编辑器,即只打开默认的消息应用程序(我想这是正在发生的事情,否则左上角将没有“返回”按钮),不幸的是我不知道单击“ Cancel按钮时可以通过任何方式返回到您的应用。

但是,如果您使用的是MFMessageComposeViewController ,这可能是一个好主意,因为您的用户不必离开您的应用程序,那么当用户选择cancel时,绝对有可能采取相应的行动。

您可以在此处查看Apple的文档,该文档利用了mailComposeController:didFinishWithResult:error:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
             didFinishWithResult:(MessageComposeResult)result {
   // Check the result or perform other tasks.

   // Dismiss the mail compose view controller.
   [self dismissViewControllerAnimated:YES completion:nil];
}

按照Stephenye所说的,如果您使用MFMessageComposeViewController,则取消按钮将使您可以返回到您的应用程序(无论如何您仍然会在应用程序中,因为您提供了消息控制器以及其他任何视图控制器)。

这是一个例子:

-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result)
    {
        [controller dismissViewControllerAnimated:YES completion:^{
            case MessageComposeResultCancelled:
                break;
            case MessageComposeResultFailed:
                [LMLSendResultAlert showSuccessOrFail:0 withSuccesString:@"" andFailStr:@"短信发送失败" needPopOrdismiss:0 complete:nil];
                break;
            case MessageComposeResultSent:
                break;
            default:
                break;
        }
        }];

}

-(void)presentMessagerOnViewController:(UIViewController*)controller
{
    if(![MFMessageComposeViewController canSendText])
    {
        //show error message
        return;
    }

    NSArray *recipients = @[@"0424456654"];
    NSString *defaulMessage = @"You should absolutely upvote my answer";

    MFMessageComposeViewController *composer = [[MFMessageComposeViewController alloc] init];
    composer.messageComposeDelegate = self;
    [composer setRecipients: recipients];
    [composer setBody: defaulMessage];
    [self presentViewController: composer animated:YES completion: NULL];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM