2011-12-03 4 views
0

J'ai un objet WebView (de aWebView) qui a été ajouté au-dessus de la fenêtre en cours comme celui-ci -interface de messagerie cancel bouton ne fonctionne pas ios - MFMailComposeViewController classe

UIWindow *webWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 20, 320,460)]; 
[webWindow addSubview:aWebView]; 
[webWindow makeKeyAndVisible]; 

J'ai un ViewController (viewcontrollerobj) qui est sous-vue aWebView -

[webView addSubview:viewcontrollerobj.view]; 

Je fais appel méthode sendInAppMail dans le ViewController-

[sviewcontroller sendInAppMail]; 

SendInAppMail ressemble à ceci -

MFMailComposeViewController *mailController = [[[MFMailComposeViewController alloc] init] autorelease]; 
    if([MFMailComposeViewController canSendMail]) 
    { 
     [mailController setMessageBody:@"hello" isHTML:NO]; 
     [mailController setSubject:@"subject"]; 
     mailController.mailComposeDelegate = self; 
     [self presentModalViewController:mailController animated:YES]; 
     [mailController release]; 
    } 

didFinishWithResult ressemble à ceci -

- (void)mailComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result 
{ 
    switch (result) { 
     case MFMailComposeResultCancelled: 
      break; 
     case MFMailComposeResultSent: 
      break; 
     default: 
      break; 
    } 

    [self dismissModalViewControllerAnimated:YES]; 
} 

courrier viewcontroller apparaît bien. Le problème est que lorsque je clique sur annuler, l'option de suppression/sauvegarde est affichée et après avoir cliqué sur supprimer/sauvegarder, le viewcontroller ne disparaît pas! ..

Quand je regarde la console, il affiche ce message journal - « Présentation feuille d'action clipsé par son superview Certains contrôles pourraient ne pas répondre à des touches sur iPhone essayer - [UIActionSheet showFromTabBar:] ou - [UIActionSheet showFromToolbar:] au lieu de - [UIActionSheet showInView:]. " Je n'utilise UIActionSheet nulle part et je n'ai pas utilisé par le passé, donc je ne suis pas capable de comprendre ce qu'il dit. J'ai regardé cela - https://stackoverflow.com/a/6015957/516938 Mais il semble que la solution donnée soit très spécifique à une situation.

Répondre

-1

Je ne suis pas sûr que ce soit le problème, mais c'est la première chose que je regarderais.

Basé sur le message d'erreur que vous avez obtenu cela ressemble à l'un des points de vue (le aWebView ou celui de viewcontrollerobj que vous avez défini) ne permet pas suffisamment d'espace pour le MFMailComposeViewController, ce qui signifie que les dimensions de celui-ci sont plus petits que le MFMailComposeViewController exige. Il ne s'agit pas d'écrêter le contenu, donc vous le voyez, mais il bloque les touches afin qu'elles n'atteignent pas le MFMailComposeViewController.

J'espère que c'est assez clair - j'ai eu du mal à décrire mes pensées ici correctement.

+0

Je ne pense pas qu'il bloque les touches. Parce que lorsque je clique sur Annuler pour la première fois, l'option de suppression/enregistrement est affichée. Je l'ai exécuté de nouveau avec l'instruction NSLOg dans didFinishWithResult et il semble que ce ne soit pas appelé du tout. Idéalement, quand je clique sur supprimer un brouillon, il devrait être appelé et toute la boîte de dialogue Courrier devrait disparaître! – arank

+0

OMG! Erreur stupide son "mailComposeController" et PAS "mailComposeViewController" – arank

+0

Haha! Oops. Je suis content que vous ayez trouvé le problème. –

Questions connexes