MFMessageComposeViewController отклонить клавиатуру - PullRequest
0 голосов
/ 10 февраля 2012

У меня проблемы с моим MFMessageComposeViewController.Я хотел бы использовать SMS в приложении.Все отлично работает для отправки смс, пока все хорошо.Но когда я нажал кнопку отмены (или кнопку отправки тоже), верхняя часть моего обзора исчезла, а клавиатура - нет.Возможно, потому, что я не использую режимное представление, а только addSubview.

-(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

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Да, вы должны использовать modalviewcontroller.

[self presentModalViewController:picker];

Кроме того, вы создаете два экземпляра MFMessageComposeViewController, сначала для проверки, может ли он отправлять текст, а затем еще один, чтобы фактически показать его. Я советую создать только один, это лучше для памяти :) также первый протекает, так как вы не выпустили его. Удачи!

0 голосов
/ 13 ноября 2013

Попробуйте закрыть существующую клавиатуру, прежде чем представлять контроллер модального вида с MFMessageComposeViewController:

[self.view endEditing:YES]; //close keyboard if it opened
[self presentModalViewController:messageController animated:YES];
0 голосов
/ 10 февраля 2012
    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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...