官方代码
发短息和邮件添加MessageUI.framework 库
发送信息
- (IBAction)showSMSPicker:(id)sender
{
// You must check that
the current device can send SMS messages before you
// attempt to create an
instance of MFMessageComposeViewController. If the
// device can not send
SMS messages,
//
[[MFMessageComposeViewController alloc] init] will return nil. Your
app
// will crash when it
calls -presentViewController:animated:completion: with
// a nil view
controller.
if ([MFMessageComposeViewControllercanSendText])
// The device can send
email.
{
[selfdisplaySMSComposerSheet];
}
else
// The device can not
send email.
{
self.feedbackMsg.hidden =NO;
self.feedbackMsg.text = @"Device not configured to send SMS.";
}
- (void)displaySMSComposerSheet
{
MFMessageComposeViewController *picker = [[MFMessageComposeViewControlleralloc] init];
picker.messageComposeDelegate =self;
picker.navigationBar.tintColor =
[UIColorblackColor];
picker.recipients = [NSArrayarrayWithObject:@"186888888"];
picker.body =@"Hello from
California!";
[selfpresentViewController:picker animated:YEScompletion:NULL];
}
//
-------------------------------------------------------------------------------
// messageComposeViewController:didFinishWithResult:
// Dismisses the message composition interface when users
tap Cancel or Send.
// Proceeds to update the feedback message field with the
result of the
// operation.
//
-------------------------------------------------------------------------------
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result
{
self.feedbackMsg.hidden =NO;
// Notifies users about errors associated with the interface
switch (result)
{
caseMessageComposeResultCancelled:
self.feedbackMsg.text = @"Result: SMS sending canceled";
break;
caseMessageComposeResultSent:
self.feedbackMsg.text = @"Result: SMS sent";
break;
caseMessageComposeResultFailed:
self.feedbackMsg.text = @"Result: SMS sending failed";
break;
default:
self.feedbackMsg.text = @"Result: SMS not
sent";
break;
}
[selfdismissViewControllerAnimated:YEScompletion:NULL];
}
发送邮件
- (IBAction)showMailPicker:(id)sender
{
// You must check that
the current device can send email messages before you
// attempt to create an
instance of MFMailComposeViewController. If the
// device can not send
email messages,
//
[[MFMailComposeViewController alloc] init] will return nil. Your app
// will crash when it
calls -presentViewController:animated:completion: with
// a nil view
controller.
if ([MFMailComposeViewControllercanSendMail])
// The device can send
email.
{
[selfdisplayMailComposerSheet];
}
else
// The device can not
send email.
{
self.feedbackMsg.hidden =NO;
self.feedbackMsg.text =@"Device not configured to send mail.";
}
}
#pragma mark - Compose Mail/SMS
//
-------------------------------------------------------------------------------
// displayMailComposerSheet
// Displays an email composition interface inside the
application.
// Populates all the Mail fields.
//
-------------------------------------------------------------------------------
- (void)displayMailComposerSheet
{
MFMailComposeViewController *picker =
[[MFMailComposeViewControlleralloc] init];
picker.mailComposeDelegate =self;
[picker setSubject:@"Hello from
California!"];
// Set up recipients
NSArray *toRecipients =
[NSArrayarrayWithObject:@"[email protected]"];
NSArray *ccRecipients = [NSArrayarrayWithObjects:@"[email protected]com",@"[email protected]", nil];
NSArray *bccRecipients =
[NSArrayarrayWithObject:@"[email protected]"];
[picker setToRecipients:toRecipients];
[picker setCcRecipients:ccRecipients];
[picker setBccRecipients:bccRecipients];
// Attach an image to the email
NSString *path =
[[NSBundlemainBundle] pathForResource:@"rainy"ofType:@"jpg"];
NSData *myData =
[NSDatadataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/jpeg"fileName:@"rainy"];
// Fill out the email body text
NSString *emailBody
=@"It is raining in sunny California!";
[picker setMessageBody:emailBody isHTML:NO];
[selfpresentViewController:picker animated:YEScompletion:NULL];
}
#pragma mark - Delegate Methods
//
-------------------------------------------------------------------------------
// mailComposeController:didFinishWithResult:
// Dismisses the email composition interface when users tap
Cancel or Send.
// Proceeds to update the message field with the result of
the operation.
//
-------------------------------------------------------------------------------
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
self.feedbackMsg.hidden =NO;
// Notifies users about errors associated with the interface
switch (result)
{
caseMFMailComposeResultCancelled:
self.feedbackMsg.text = @"Result: Mail sending canceled";
break;
caseMFMailComposeResultSaved:
self.feedbackMsg.text = @"Result: Mail
saved";
break;
caseMFMailComposeResultSent:
self.feedbackMsg.text = @"Result: Mail sent";
break;
caseMFMailComposeResultFailed:
self.feedbackMsg.text = @"Result: Mail sending failed";
break;
default:
self.feedbackMsg.text = @"Result: Mail not
sent";
break;
}
[selfdismissViewControllerAnimated:YEScompletion:NULL];
}
打电话 我只写了一种简单的方式 还有其他的
添加 AddressBookUI.framework 库
#import <AddressBook/AddressBook.h>
#import <AddressBook/ABMultiValue.h>
#import <AddressBook/ABRecord.h>
- (void)tableView:(UITableView *)tableView
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
NSString *key =
[keyArrayobjectAtIndex:indexPath.row];
NSArray *array =
[tableDataDictionaryobjectForKey:key];
NSString *phoneNum
= [arrayobjectAtIndex:1];//电话号码
NSURL *phoneURL = [NSURLURLWithString:[NSString stringWithFormat:@"tel:%@",phoneNum]];
if ( !_phoneCallWebView ) {
_phoneCallWebView =
[[UIWebViewalloc] initWithFrame:CGRectZero];
}
[_phoneCallWebViewloadRequest:[NSURLRequest requestWithURL:phoneURL]];
}