MFMailComposeViewController не работает на устройстве, экземпляр, напечатанный на выводе консоли: <регистр sp недоступен>
Я создал этот класс Utility под названием MailComposeViewController. Я собираю этот класс из другого контроллера представления, почтовый Composer работает должным образом на имитаторе, но на устройстве происходит сбой.
Таким образом, я вызываю функцию
NSLog(@"Mail");
MailComposeViewController *mailComposer =[[MailComposeViewController alloc]init];
[mailComposer showPicker:self andImage:md.Img_savedImageAfterEffect];
Ниже мой класс Utility, который содержит код для функциональности Send Mail
#import "MailComposeViewController.h"
UIViewController *Controller;
@implementation MailComposeViewController
-(void)showPicker:(id)viewController andImage:(UIImage*)image;
{
Controller = viewController;
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass != nil)
{
// We must always check whether the current device is configured for sending emails
if ([mailClass canSendMail])
{
[self displayComposerSheet:viewController andImage:image];
}
else
{
//[self launchMailAppOnDevice];
[self displayComposerSheet:viewController andImage:image];
}
}
else
{
//[self launchMailAppOnDevice];
[self displayComposerSheet:viewController andImage:image];
}
}
-(void)displayComposerSheet:(id)viewController andImage:(UIImage*)image
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
NSData *myData = UIImageJPEGRepresentation(image,0.9);
[picker addAttachmentData:myData mimeType:@"image/jpg" fileName:@""];
picker.modalPresentationStyle = UIModalPresentationFormSheet;
picker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[viewController presentModalViewController:picker animated:YES];
[picker release];
}
// 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
{
//message.hidden = NO;
// Notifies users about errors associated with the interface
switch (result)
{
case MFMailComposeResultCancelled:
// message.text = @"Result: canceled";
break;
case MFMailComposeResultSaved:
// message.text = @"Result: saved";
break;
case MFMailComposeResultSent:
//message.text = @"Result: sent";
break;
case MFMailComposeResultFailed:
// message.text = @"Result: failed";
break;
default:
// message.text = @"Result: not sent";
break;
}
[Controller dismissModalViewControllerAnimated:YES];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Crash Report
UIKit`-[UIViewController presentModalViewController:animated:]:
0x3a4d5238: push {r7, lr}
0x3a4d523a: mov r7, sp
0x3a4d523c: sub sp, #4
0x3a4d523e: movw r1, #18934
0x3a4d5242: mov.w r9, #0
0x3a4d5246: movt r1, #525
0x3a4d524a: str.w r9, [sp]
0x3a4d524e: add r1, pc
0x3a4d5250: ldr r1, [r1]
0x3a4d5252: blx 0x3a734ce4 ; symbol stub for:
-[_UIHostedTextServiceSession dismissTextServiceAnimated:]
0x3a4d5256: add sp, #4
0x3a4d5258: pop {r7, pc}
0x3a4d525a: nop
Экземпляры View Controller и mailController Печатается на консоли Печатное описание viewController: Печатное описание средства выбора: (MFMailComposeViewController *) picker =