在iOS开发中,我们可以通过MFMessageComposeViewController实现在程序中调用发送短信的功能,我们首先要引入MessageUI.Framework框架,并引入头文件<MessageUI/MessageUI.h>,通过以下代码我们就可以实现发送短信的功能。注:要在对应的类引入<MFMessageComposeViewControllerDelegate>委托

- (void)sendMessagebyiAn
{
    if([MFMessageComposeViewController canSendText]){
        NSString *phoneNumber = @"13888888888";
        if (phoneNumber && phoneNumber.length > 0) {
            MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init];
            vc.view.backgroundColor = [UIColor whiteColor];
            vc.recipients = @[phoneNumber];
            vc.messageComposeDelegate = self;
            vc.body = @"测试消息";
            [self presentViewController:vc animated:YES completion:nil];
        }
    }else{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息"
                                                        message:@"该设备不支持短信功能"
                                                       delegate:self
                                              cancelButtonTitle:nil
                                              otherButtonTitles:@"确定", nil];
        [alert show];
    }
}

// 发送短信的委托方法
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
    switch (result) {
        case MessageComposeResultSent:
            // 短信发送成功
            break;

        case MessageComposeResultFailed: 
            // 短信发送失败
            break;

        case MessageComposeResultCancelled:
            // 短信被用户取消传送
            break;

        default:
            break;
    }
}

如果以上代码使用后没有发现问题,那么您可以略过以下部分了,如果你出现了问题,那么恭喜你,你找对地方了。当你使用iPhone6等iOS8.0以上系统的手机测试的时候,发送短信的界面都是正常的,但是当你使用iOS7系统的手机测试的时候就会出现问题。如图所示:

iosmessagehide1

不显示发送的联系人了,这是因为iOS7的navigationbar的问题。具体您可以看看这篇文章:http://stackoverflow.com/questions/19105591/recipients-field-of-mfmessagecomposeviewcontroller-doesnt-show-in-ios-7

我们可以通过添加以下代码解决这个问题,在present MFMessageComposeViewController控制器之前,我们加入以下代码

if ([[[UIDevice currentDevice] systemVersion] intValue] = 7) {
     [[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 
}

添加代码之后,恢复正常,如图所示:

iosmessagehide2

好了,这个知识点我也是在stackoverflow上发现的,在此分享给大家!

打赏作者
如果这篇文章帮助了你,可以请作者喝罐可乐,以此激励作者创作更多!

您的支持将鼓励我继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏