2012-02-10 110 views
0

我有我的MFMessageComposeViewController麻烦。我想使用SMS in-app。 一切工作正常发送短信,迄今为止很好。但是,当我点击取消按钮(或发送按钮)我的观点顶部消失,但键盘没有。这可能是因为我不使用modale视图,而只是一个addSubview。MFMessageComposeViewController关闭键盘

-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result 
{ 

    if (result == MessageComposeResultCancelled) 
    { 
     NSLog(@"Message annulé"); 
     [controller resignFirstResponder]; 
     [controller.view removeFromSuperview]; 
     [controller release]; 
    } 
    else if (result == MessageComposeResultSent) 
    { 
     NSLog(@"Message envoyé"); 
     ... 
    } 
    else 
    { 
     NSLog(@"Message non envoyé"); 
     ... 
    } 
} 

-(void)sendSMS:(NSString *)bodyOfMessage :(Phone *)recipient 
{ 
    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; 

    if([MFMessageComposeViewController canSendText]) 
    { 
     MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; 
     picker.messageComposeDelegate = self; 

     NSMutableArray *toRecipients = [[NSMutableArray alloc]init]; 
     [toRecipients addObject:recipients.phoneNumber]; 
     [picker setRecipients:(NSArray *)toRecipients]; 
     [toRecipients release]; 

     NSString *bodyString = nil; 
     bodyString = bodyOfMessage; 
     [picker setBody:bodyString]; 

     [self addSubView:picker.view]; 
     [picker release]; 
    } 
} 

任何想法?我只使用modalView?

遗憾的拼写错误...

谢谢。 Tommy

回答

1

是的,你必须使用modalviewcontroller。

[self presentModalViewController:picker]; 

此外,要创建的MFMessageComposeViewController的两个实例,首先检查它是否可以发送文本,然后另一个实际表现出来。我建议创建一个,这对内存更好:)也是第一个泄漏,因为你没有释放它。祝你好运!

+0

好的谢谢;) – 2012-02-10 10:52:40

0
if ([MFMessageComposeViewController canSendText]) { 
     MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; 
     picker.messageComposeDelegate = self; 
     NSString *bodyString = nil; 

     NSMutableArray *toRecipients = [[NSMutableArray alloc]init]; 
     [toRecipients addObject:@"phone here"]; 
     [picker setRecipients:(NSArray *)toRecipients]; 
     [toRecipients release]; 

     bodyString = [NSString stringWithFormat: @"Message body"]; 
     [picker setBody:bodyString]; 

     [self presentModalViewController:picker animated:YES]; 
     [picker release]; 
} 
0

尝试关闭现有的键盘,MFMessageComposeViewController呈现模式视图控制器之前:

[self.view endEditing:YES]; //close keyboard if it opened 
[self presentModalViewController:messageController animated:YES];