2012-02-10 9 views
0

私のMFMessageComposeViewControllerに問題があります。アプリ内でSMSを使用したいと思います。 これまでのところ、SMSを送信するにはすべて正常に動作します。しかし、私がキャンセルボタンを押す(またはボタンを送信する)私のビューのトップはdisapearedしかし、キーボードはしませんでした。私は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の2つのインスタンスを作成しています。私はちょうど1つを作成することをお勧めします、それはメモリのために良いです:)また、あなたがそれを解放しなかったので、最初のものは漏れています。がんばろう!

+0

をわかりましたありがとうございました。) –

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]; 
関連する問題