2013-04-23 2 views
2

Я хочу всплывать MFMessageCompose модель на (topviewcontroller) из другого метода NSObject, который выполняется в фоновом режиме.wait_fences: не удалось получить ответ: 10004003 ошибка возникает при нажатии кнопки (отправить, отменить) модели MFmessgecompose iOS

I всплывать MFMessageCompose модель, используя этот код:

MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init]; 
if([MFMessageComposeViewController canSendText]) 
{ 
    controller.body = @"Check out FundooSpace for mobile.Download it now from app.fundoospace.net/FundooSpace/d"; 
    controller.recipients = (NSArray *)passa; 
    passa = nil; 
    AppDelegate * appDelegateObject1 = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    controller.messageComposeDelegate = self; 
    [appDelegateObject1.navigationCntr.topViewController presentModalViewController:controller animated:NO]; 
} 

он прекрасно работает. но когда я нажимаю кнопку отправки или отмены, тогда приложение получает сбой и дает ошибку

wait_fences: failed to receive reply: 10004003 

, пожалуйста, предложите мне.

+0

Я хочу, чтобы всплывающая модель messagecompose на topviewcontroller (она будет любой) – Mahesh

ответ

0

Я точно проверил код, что вы включили в свой вопрос, и для меня он работает хорошо работает на устройстве.

1) убедитесь, что у делегата в вашем .h

@interface ViewController : UIViewController <MFMessageComposeViewControllerDelegate> 

2) Вы должны реализовать метод делегата также в вашем .m:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result { 
    NSLog(@"didFinishWithResult"); 

    // you have to deal with the result var 

    switch (result) { 
     case MessageComposeResultCancelled: 
      NSLog(@"Cancelled"); 
      break; 
     case MessageComposeResultFailed: 
      UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle:@"MyApp" 
           message:@"Unknown Error" 
           delegate:self 
         cancelButtonTitle:@”OK” 
         otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 
      break; 
     case MessageComposeResultSent: 

      break; 
     default: 
      break; 
    } 

    [self dismissModalViewControllerAnimated:YES]; 
} 

3) если вы on> iOS6.0 «старый» presentModalViewController: анимированный устарел, поэтому измените на presentViewController: анимированный: завершение:, так как Xcode также указывает это.

+0

Как много статей SO о ошибке wait_fences, мой рабочий тест также представляет ошибку wait_fence. Если ваше приложение отлично работает на устройстве, вы можете игнорировать это сообщение (например, в соответствии с этой статьей SO: http://stackoverflow.com/a/9046838/2129209) – nzs

+0

Также другие сказали, что некоторые задержки могут помочь при представлении модального представления, так как инфраструктура iOS может иметь некоторую проблему с ресурсами при быстром представлении модальных Посмотреть. Поэтому я попробовал для вашего кода, включая это: [self performSelector: @selector (showmsg) withObject: nil afterDelay: 0.5]; и превращение метода messagecomposer в showmsg. По-прежнему идет ошибка wait_fences, но тестовое приложение работает префектно, отправляет sms красиво. – nzs

Смежные вопросы