iOS7中 发送短信(MFMessageComposeViewController)不显示联系人号码
在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系统的手机测试的时候就会出现问题。如图所示:
不显示发送的联系人了,这是因为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];
}
添加代码之后,恢复正常,如图所示:
好了,这个知识点我也是在stackoverflow上发现的,在此分享给大家!
10 评论
iMessage为啥我从来都没收到过广告。。
@苏菲的师姐 因为亲的运气好
想问问iOS软件的制作,你懂么?是否有书籍关于叫你如何入门制作iOS APP的?
@大路 苹果官方文档
这主题不错 很细致
苹果的程序怎么在真机上试?不是听说这玩意只能安装认证过的软件。不懂
@咸菜一点米 需要购买开发者证书 下载描述文件 才能真机调试
感叹下现在iMessage上是广告泛滥,唉
@Betty 嗯 的确!
@ian 我本来一度都把手机上iMessage功能给关掉
可是我忘了把电脑上的也关掉,以至于垃圾消息都在电脑上收了
现在真正觉得是广告无孔不入
分享您的想法?
撰写评论