2010-06-21 2 views
4

J'ai un problème avec ce morceau de code quand je construis pour différents SDKs de base:problème avec MFMailComposeViewController de « Pas de comptes de messagerie » alerte - SDK 3.0 vs SDK 4.0

MFMailComposeViewController *mail = nil; 
mail = [[MFMailComposeViewController alloc] init]; 
NSString *description = @"Some mail string"; 
if([MFMailComposeViewController canSendMail]) 
{ 
    mail.mailComposeDelegate =self; 
    [mail setSubject:story.title]; 
    [mail setMessageBody:[NSString stringWithFormat:(NSString *)kMessageBodyFormat,description,story.webLink] isHTML:NO]; 
} 
[self presentModalViewController:mail animated:YES]; 
[mail release]; 
mail=nil; 

Lorsque je construis avec SDK base 3.0, dans le cas où l'initialisation MFMailComposeViewController's renvoie zéro qui se produit si l'utilisateur n'a pas de comptes de messagerie, l'alerte par défaut "Aucun compte de messagerie" est mis en place par le système.

Mais lorsque je le compile avec Base SDK 4.0 et le déploie pour le système d'exploitation 3.0, si l'utilisateur n'a aucun compte de messagerie, la même alerte n'est pas affichée par le système, mais se bloque presentModalViewController.

MFMailComposeViewController's retours d'initialisation nul si l'utilisateur ne dispose d'aucun compte de messagerie à la fois 3.0 et 4.0 SDK de base, mais quelque part presentModalViewController met intelligemment l'alerte en cas de SDK 3.0 mais SDK 4.0 déployé sur 3.0 échoue et se bloque.

Est-ce que quelqu'un a fait face à ce problème/des idées ce qui se passe réellement.

Merci, Raj

Répondre

7

je faisais juste des tests bêta avec iOS 4 et est tombé sur votre poste. Je ne pouvais pas comprendre pourquoi c'était le retour nul, alors merci pour la réponse. En ce qui concerne la réponse à votre question, il vous suffit de vérifier si elle est nulle. S'il est nul, ne présentez pas le contrôleur de vue modale. Il montrera toujours le popup.

+0

Oui, très vrai! Le crash était dû au paramètre nil à présentModalViewController qui était correct dans 3.0 mais dans le SDK 4.0 de base c'est problématique. Je ne comprends pas une chose cependant, d'où l'alerte "No Mail Accounts" apparaît-elle? Il est probable que le système vérifie les comptes de messagerie dès que l'objet MFMailComposeViewController est créé et affiche l'alerte. –

+0

Curieux si vous avez besoin d'obtenir un pointeur vers le "No Mail Accounts" UIAlertView? J'ai une sous-classe à l'intérieur d'un UIPopOverController qui devient inactive/l'interaction de l'utilisateur devient "Non" si/quand le bouton OK est appuyé sur la vue d'alerte "No Mail Accounts". Si vous touchez pour rejeter le popover - puis appuyez sur l'action pour le montrer à nouveau - le popover devient visible. Mais cela ne se produit que si vous passez par ce flux - en tapant "OK" de l'alerte "No Mail Accounts" ne fonctionne pas. – Cole

8

J'ai trouvé cette question alors que j'ai le même problème.

Je pense que c'est parce que, s'il n'y a pas de compte de messagerie mis en place dans le téléphone. Le [[MFMailComposeViewController alloc] init] renvoie zéro. Donc, avant de présenter le contrôleur de vue, nous devons vérifier s'il est nul ou non.

+0

vrai! Je devenais fou avec ce problème – Claus

Questions connexes