#iphone #objective-c #ios #sms #messageui
#iPhone #objective-c #iOS #sms #messageui
Вопрос:
После того, как после использования MFMailComposeViewController
move to MFMessageComposeViewController
было прямо, но есть подвох.
Предположим, что этот код:
MFMessageComposeViewController* mySMS = [[MFMessageComposeViewController alloc] init];
[mySMS setDelegate:self];
[self presentModalViewController:mySMS animated:YES];
Это работает таким образом для почты, но в sms вы должны установить другой делегат для внутренней структуры, подобной этой:
[SMS setMessageComposeDelegate:self];
Надеюсь, вы не застряли на этом, как я сделал сегодня рано.
Ответ №1:
Вам необходимо реализовать метод делегирования -(void)mailComposeController(MFMailComposeViewController*)controller didFinishWithResult (MFMailComposeResult)result error:(NSError*)error:
И внутри него вы должны отклонить его самостоятельно:
-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
[self dismissModalViewControllerAnimated:YES];
}
Комментарии:
1. Упомянутый вами код предназначен для класса MFMailComposer. Вопрос был задан специально MFMessageComposer.
2. Для MFMessageComposer необходимо использовать следующее: developer.apple.com/library/ios/documentation/MessageUI /… :
Ответ №2:
Вы можете увидеть MFMailComposeResult в документации Apple
enum MFMailComposeResult {
MFMailComposeResultCancelled,
MFMailComposeResultSaved,
MFMailComposeResultSent,
MFMailComposeResultFailed
};
typedef enum MFMailComposeResult MFMailComposeResu<
И вы должны уволить контроллер самостоятельно в методе делегирования
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
switch (result){
case MFMailComposeResultCancelled:
NSLog(@"Mail cancelled");
break;
case MFMailComposeResultSaved:
NSLog(@"Mail saved");
break;
case MFMailComposeResultSent:
NSLog(@"Mail sent");
break;
case MFMailComposeResultFailed:
NSLog(@"Mail sent failure: %@", [error localizedDescription]);
break;
default:
break;
}
// Close the Mail Interface
[self dismissViewControllerAnimated:YES completion:NULL];
}