`

MFMessageComposeViewController发送短信

阅读更多
MFMessageComposeViewController 点击cancel 或者发送 键盘不出现
//////////////////////////////////////////////////////////////////////////////
加载MFMessageComposeViewController
- (void)showMessageView
{
    if( [MFMessageComposeViewController canSendText] )
    {
        MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init]; //autorelease];
        controller.recipients = [NSArray arrayWithObject:@"15988888888"];
        controller.body = @"请直接将此条认证短信发送给我们,以完成手机安全绑定。(9qzkd27953ma)";
        controller.messageComposeDelegate = self;
       
        [self presentModalViewController:controller animated:YES];
//        [[[[controller viewControllers] lastObject] navigationItem] setTitle:@"SomethingElse"];//修改短信界面标题
        [controller release];
    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息"
                                                        message:@"该设备不支持短信功能"
                                                       delegate:self
                                              cancelButtonTitle:nil
                                              otherButtonTitles:@"确定", nil];
        [alert show];
        [alert release];
    }
}


MFMessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[controller dismissModalViewControllerAnimated:NO];//关键的一句   不能为YES
switch ( result ) {
case MessageComposeResultCancelled:
        {
//click cancel button
          }
break;
case MessageComposeResultFailed:// send failed
           
break;
case MessageComposeResultSent:
            {
               
//do something
            }
break;
default:
break;
}

}
我们知道可以使用这样的代码在iphone中发送短信:
[[UIApplication sharedApplication] openURL:@"sms:12345678"];
但这样的方式无法指定短信内容。那么我们可以使用MessageUI框架。

首先在程序中导入MessageUI.framework。import头文件:#import "DeviceDetection.h"

然后在代码中使用下面的语句来调用短信发送窗口,并指定号码和短信内容:

MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
controller.body = @"zc";
controller.recipients = [NSArray arrayWithObjects:@"106295598", nil];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];

同时实现协议MFMessageComposeViewControllerDelegate,
在协议方法messageComposeViewController:didFinishWithResult:
中解散窗口:
switch (result) {
case MessageComposeResultCancelled:
NSLog(@"Cancelled");
break;
case MessageComposeResultFailed:
[self alert:@"发送短信错误!"];
break;
case MessageComposeResultSent:
break;
default:
break;
}
[self dismissModalViewControllerAnimated:YES];
每日分享 - 检测iPhone/iPod Touch/iPad设备类型 

#import <Foundation/Foundation.h>
#import <sys/utsname.h>

enum {
    MODEL_IPHONE_SIMULATOR,
    MODEL_IPOD_TOUCH,
    MODEL_IPHONE,
    MODEL_IPHONE_3G,
    MODEL_IPAD
};

@interface DeviceDetection : NSObject

+ (uint) detectDevice;

+ (NSString *) returnDeviceName:(BOOL)ignoreSimulator;
+ (BOOL) isIPodTouch;


@end


#import "DeviceDetection.h"

@implementation DeviceDetection

+ (BOOL) isIPodTouch
{
    int model = [DeviceDetection detectDevice];
    if (model == MODEL_IPOD_TOUCH || model == MODEL_IPAD){
        //|| model == MODEL_IPHONE_SIMULATOR){
        return YES;
    }   
    else {
        return NO;
    }

}



+ (uint) detectDevice {
    NSString *model= [[UIDevice currentDevice] model];
   
    // Some iPod Touch return "iPod Touch", others just "iPod"
   
    NSString *iPodTouch = @"iPod Touch";
    NSString *iPodTouchLowerCase = @"iPod touch";
    NSString *iPodTouchShort = @"iPod";
    NSString *iPad = @"iPad";
   
    NSString *iPhoneSimulator = @"iPhone Simulator";
   
    uint detected;
   
    if ([model compare:iPhoneSimulator] == NSOrderedSame) {
        // iPhone simulator
        detected = MODEL_IPHONE_SIMULATOR;
    }
    else if ([model compare:iPad] == NSOrderedSame) {
        // iPad
        detected = MODEL_IPAD;
    } else if ([model compare:iPodTouch] == NSOrderedSame) {
        // iPod Touch
        detected = MODEL_IPOD_TOUCH;
    } else if ([model compare:iPodTouchLowerCase] == NSOrderedSame) {
        // iPod Touch
        detected = MODEL_IPOD_TOUCH;
    } else if ([model compare:iPodTouchShort] == NSOrderedSame) {
        // iPod Touch
        detected = MODEL_IPOD_TOUCH;
    } else {
        // Could be an iPhone V1 or iPhone 3G (model should be "iPhone")
        struct utsname u;
       
        // u.machine could be "i386" for the simulator, "iPod1,1" on iPod Touch, "iPhone1,1" on iPhone V1 & "iPhone1,2" on iPhone3G
       
        uname(&u);
       
        if (!strcmp(u.machine, "iPhone1,1")) {
            detected = MODEL_IPHONE;
        } else {
            detected = MODEL_IPHONE_3G;
        }
    }
    return detected;
}

+ (NSString *) returnDeviceName:(BOOL)ignoreSimulator {
    NSString *returnValue = @"Unknown";
   
    switch ([DeviceDetection detectDevice]) {
        case MODEL_IPHONE_SIMULATOR:
            if (ignoreSimulator) {
                returnValue = @"iPhone 3G";
            } else {
                returnValue = @"iPhone Simulator";
            }
            break;
        case MODEL_IPOD_TOUCH:
            returnValue = @"iPod Touch";
            break;
        case MODEL_IPHONE:
            returnValue = @"iPhone";
            break;
        case MODEL_IPHONE_3G:
            returnValue = @"iPhone 3G";
            break;
        default:
            break;
    }
   
    return returnValue;
}

@end
分享到:
评论

相关推荐

    iOS打电话、发短信、发邮件实例代码

    本文实例为大家分享了iOS打电话、发短信、发邮件,指定QQ用户发送QQ消息的具体代码,供大家参考,具体内容如下 1.发短信 头文件 #import 头部代理 @interface ViewController () 发送信息 - (void)senderMessage...

    邮件、短信、相机、图库的使用

    系统邮件、短信、相机、图库的使用,使用UIImagePickerController,MFMessageComposeViewController,MFMailComposeViewController

    SwiftMFMessageComposeViewController

    SwiftMFMessageComposeViewController 资源 该存储库包含一个示例 XCode 项目,用于在上发布的博客文章,标题为 。 兼容性 验证此存储库的代码适用于带有 Swift 1.2 的 XCode 6.3

    行政数据分析看板8.xlsx

    Excel数据看板,Excel办公模板,Excel模板下载,Excel数据统计,数据展示

    自动驾驶运动规划(Motion Planning).pdf

    自动驾驶运动规划(Motion Planning)问题分析

    跟我一起写makefile

    跟我一起写makefile的PDF,学习用。

    AI 技术落地有望强化客户运 营.pdf

    AI 技术落地有望强化客户运 营.pdf

    公司年会主持词模板.docx

    年会班会资料,节目策划,游戏策划,策划案,策划方案,活动方案,筹办,公司年会,开场白,主持人,策划主题,主持词,小游戏。

    weixin103基于h5移动网赚项目微信小程序+springboot后端毕业源码案例设计.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    labview大作业, 简单的OCR识别, 准确率有待提升.zip

    labview 与 C 和BASIC 一样,LabVIEW [2]也是通用的编程系统,有一个完成任何编程任务的庞大函数库。LabVIEW [3]的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。LabVIEW [3]也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。 LabVIEW [2](Laboratory Virtual Instrument Engineering Workbench)是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而 LabVIEW 则采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。VI指虚拟仪器,是 LabVIEW 的程序模块。 LabVIEW [2] 提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。用户界面在 LabVIEW 中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码,又称G代码。

    【信号去噪】基于无迹卡尔曼滤波UKF实现信号去噪附matlab代码.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    MATLAB有意思的项目.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    .

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    基于Django框架的博客系统.zip

    基于Django框架的博客系统.zip

    年企业个人年度工作总结.docx

    工作总结,新年计划,岗位总结,工作汇报,个人总结,述职报告,范文下载,新年总结,新建计划。

    某块的m50固件 cpu7621 a

    某块的m50固件某块的m50固件某块的m50固件某块的m50固件

    Google Play商店.apk

    Google Play商店.apk

    重庆大学 2011-2012(2)数字电子技术II.pdf

    重庆大学期末考试试卷,重大期末考试试题,试题及答案

    电商运营年度工作总结.docx

    工作总结,新年计划,岗位总结,工作汇报,个人总结,述职报告,范文下载,新年总结,新建计划。

    ACM的概要介绍与分析

    ACM,即Association for Computing Machinery,是全球计算机领域最具影响力的专业学术组织。它为广大计算机从业者、研究人员和教育者提供了一个交流、分享和创新的平台。在ACM的资源库中,可以找到大量关于计算机科学、信息技术和软件工程等方面的权威文献、研究报告和最新技术动态。 ACM的资源涵盖了从基础理论知识到实际应用技术的广泛领域。无论你是初学者还是资深专家,都能在这里找到适合自己的学习资源。对于初学者来说,ACM提供了丰富的入门教程和在线课程,帮助他们快速掌握计算机科学的基本概念和编程技能。对于资深专家来说,ACM的专业期刊、会议录和研究成果则为他们提供了深入了解行业前沿、拓宽研究视野的宝贵资源。 此外,ACM还组织举办了一系列具有全球影响力的竞赛和活动,如国际大学生程序设计竞赛(ACM-ICPC)。这些竞赛不仅锻炼了参赛者的编程能力和团队协作能力,也为他们提供了一个展示自己才华的舞台。通过参与这些竞赛和活动,学生们能够更好地了解行业发展趋势,提升自己的综合素质。 总的来说,ACM的资源丰富多样,既适合初学者入门学习,也适合资深专家深入研究。通过充

Global site tag (gtag.js) - Google Analytics