- 浏览: 30721 次
- 性别:
- 来自: 北京
最新评论
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
//////////////////////////////////////////////////////////////////////////////
加载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
发表评论
-
AddressBook iOS读取通讯录信息
2013-04-15 15:26 1649iphone如许app读取通讯录信息,读取通讯录信息时需要加载 ... -
RESTful HTTP的实践
2013-04-11 12:20 1019本文对RESTful HTTP的基础原理做了一个概览,探讨了开 ... -
IOS使用第三方工具(RegexKitLite)实现正则表达式
2013-04-10 18:19 1885在IOS应用中,经常要输入数据,然输入数据,就要 ... -
iPhone:动态获取UILabel的高度和宽度
2013-04-09 18:10 810在使用UILabel存放字符串时,经常需要获取label的长宽 ... -
获得通讯录中联系人的所有属性ABAddressBookRef
2013-04-09 13:11 1016获得通讯录中联系人的所有属性 ,看代码: ABA ... -
iOS 绘制直线、矩形、文字的方式
2013-04-08 10:35 4315首先,获取上下文 CGContextRef context = ... -
iOS 开发小技巧(二)
2013-04-08 09:36 7121、获取全局的Delegate对象,这样我们可以调用这个对象里 ... -
iOS 开发小技巧(一)
2013-04-08 09:27 6811.取字符串中的某段字符串 [plain] view pla ... -
IOS导航栏的创建方法
2013-04-07 15:45 1016基本思路是: 1.创建一个导航栏(UINavigationB ... -
iOS 绘制UIImage的方式
2013-04-07 13:03 2412一:在绘制到context前通过矩阵垂直翻转坐标系 // ui ... -
理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
2013-04-07 12:59 1751在VC++6.0的include有一个stdarg.h头文件, ... -
iOS 开发小技巧(三)
2013-04-06 09:21 6651.判断邮箱格式是否正确的代码 //利用正则表达式验证 -(B ...
相关推荐
在压缩包中的"IOS 程序内部发短信"文件可能是包含了一个简单的示例项目,你可以通过查看和运行它来进一步理解这个过程。记得在实际开发中,始终要遵循Apple的App Store审核指南,确保你的应用符合所有安全和隐私政策...
这个“iOS发短信代码demo”就是一个简单的示例,旨在帮助初学者理解和实现这个功能。以下是对这个demo中可能包含的关键知识点的详细解释: 1. **使用MFMessageComposeViewController**: ...
总的来说,实现iOS平台上的短信发送功能涉及导入MessageUI框架、获取权限、创建并配置MFMessageComposeViewController实例,以及处理发送状态的回调。通过这些步骤,开发者可以为用户提供便捷的短信发送功能。
在实现发送短信的功能时,我们需要创建一个MFMessageComposeViewController实例,并设置其代理为当前的ViewController。同时,还需要设置收件人(telNumber): ```swift func sendSMS(telNumber: String) { if ...
当你需要在应用中添加发送短信的功能时,你需要创建`MFMessageComposeViewController`的实例。 2. **检查短信发送权限**: 在iOS 10及以上版本,发送短信之前,你需要检查用户是否允许你的应用访问其短信功能。这...
在iOS平台上,可以使用MFMessageComposeViewController类进行短信发送,但苹果对短信接收的API进行了限制,通常只能通过第三方推送服务来实现类似的功能。 此外,开源项目和库也大大简化了短信服务的开发工作。例如...
在确定可以发送短信后,我们可以创建一个`MFMessageComposeViewController`实例,并设置其属性,如收件人电话号码和预设的短信内容。例如,如果你想发送短信到电话号码`1234567890`,可以这样操作: ```swift let ...
这个名为“ios-发短信.zip”的压缩包很可能包含了一个示例项目,用于演示如何在iOS设备上实现短信功能。由于描述中提到这需要真机进行测试,这意味着模拟器可能无法完全支持这项功能,因为iOS模拟器不支持发送实际的...
本文将详细讲解如何实现"跳转到打电话、发短信的界面"以及"直接打电话发短信"的技术细节。 一、跳转到打电话界面 1. Android系统: 在Android中,我们可以使用`Intent`来启动拨号界面。首先,创建一个`Intent`对象...
虽然标题提到不调用系统自带的发送短信,但在iOS中,官方推荐的方法是使用`MFMessageComposeViewController`类,它允许用户在App内部编写并发送短信。首先,确保在Info.plist文件中添加`...
MessageUI框架提供了MFMessageComposeViewController类,用于支持在应用内部撰写和发送短信。虽然通常我们会使用这个控制器来展示一个系统级别的界面,但通过一些技巧,我们可以实现无界面发送。 第一步,需要导入...
在IT行业中,发送中文短信是一项常见的通信需求,特别是在移动设备和应用程序中。本文将深入探讨如何实现这个功能,包括技术背景、实现原理以及可能遇到的问题。 首先,我们要理解短信服务的基本概念。短信(Short ...
首先,我们要知道在iOS中,发送短信通常依赖于`MFMessageComposeViewController`类,它是`MessageUI`框架的一部分。`MessageUI`框架提供了处理短信和邮件的接口,允许应用程序在用户界面中嵌入短信或邮件的撰写视图...
此外,对于iOS系统,也需要考虑使用其提供的`MFMessageComposeViewController`进行短信发送,并遵循类似的过程来构建自定义电话簿功能。 总结来说,"自定义短信发送demo"是一个包含发送短信和定制电话簿功能的示例...
if MFMessageComposeViewController.canSendText() { // 检查设备是否支持发送短信 self.present(messageComposer, animated: true, completion: nil) } else { // 设备不支持发送短信,可以在此提示用户 } ``` ...
在iOS平台上,可以利用MFMessageComposeViewController进行短信发送,而MessageUI框架则提供了接收短信的接口。 在“手机短信收发程序”中,关键的类可能是SmsTest,这个类可能包含了发送短信、接收短信、管理短信...
要使用此方法,我们需要创建MFMessageComposeViewController实例,设置其代理,然后设置短信的body和收件人。当用户点击发送时,实际的发送过程由iOS的短信应用处理。这种方法的优点是用户界面直观,但缺点是它需要...
`MFMessageComposeViewController`是iOS内置的一个用于发送短信的视图控制器,它提供了创建、配置和显示短信发送界面的能力。首先,我们需要检查设备是否支持发送短信,这可以通过调用`...
在iOS中,短信发送通常通过`MFMessageComposeViewController`类来实现,它是一个内置的控制器,可以展示一个用于编写和发送短信的界面。首先,你需要检查设备是否支持发送短信: ```swift if ...