Twitter Post iOS6 Problème du button 'Annuler'

Je suis en train de changer mon application pour iOS6 et l'utilisation de l'iPhone, je n'arrive pas à comprendre pourquoi lorsque je post sur Twitter en utilisant le nouveau cadre social, je dois appuyer deux fois sur 'Annuler' pour fermer problème ou une solution? Voici le code pour le button.

- (IBAction)twitterPost:(id)sender { if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { mySLComposerSheet = [[SLComposeViewController alloc] init]; mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [mySLComposerSheet setInitialText:[NSSsortingng ssortingngWithFormat:@"This is my tweet, hello!",mySLComposerSheet.serviceType]]; [self presentViewController:mySLComposerSheet animated:YES completion:nil]; } [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { NSLog(@"dfsdf"); switch (result) { case SLComposeViewControllerResultCancelled: break; case SLComposeViewControllerResultDone: break; default: break; } }]; } 

Si vous utilisez mySLComposerSheet cela fonctionne très bien …

 [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil]; 

Mon expérience avec SLComposeViewController est que les controllers Twitter et Weibo doivent être rejetés manuellement alors que le controller facebook semble mieux se comporter.

Si je ne rejette pas ViewControllerAnimated moi-même, appuyer sur le button "Envoyer" enverra le tweet ou le post de weibo mais je serai à gauche avec ce qui semble être une vue invisible sur ma propre vue. Ainsi, je ne peux plus interagir avec mon application.

Je ne sais pas pourquoi mon application fonctionne comme ça … Fait intéressant, le completionHandler pour annuler n'est appelé qu'une seule fois. Le deuxième robinet rejette le controller de vue.

 + (void) shareText:(NSSsortingng*)text image:(UIImage*)image social:(NSSsortingng*)service url:(NSSsortingng*)url { SLComposeViewController* controller = [SLComposeViewController composeViewControllerForServiceType:service]; [controller setInitialText:text]; [controller addImage:image]; [controller addURL:[NSURL URLWithSsortingng:url]]; controller.completionHandler = ^(SLComposeViewControllerResult result) { if( SLComposeViewControllerResultDone == result ) { NSLog(@"rewards for share: %@!", service ); } if( ![SLServiceTypeFacebook isEqualToSsortingng:service] ) // facebook behaves [[CBLAppDelegate instance].activeViewController dismissViewControllerAnimated:true completion:nil]; }; [[CBLAppDelegate instance].activeViewController presentViewController:controller animated:true completion:nil]; } 

Trouvé le problème. Cela se produit uniquement lorsqu'un gestionnaire d'achèvement est ajouté à TWTweetComposeViewController. Si ajouté, assurez-vous d'appeler:

[self dismissModalViewControllerAnimated: YES];

Essayez ce copain

  [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { switch (result) { case SLComposeViewControllerResultCancelled: [self performSelector:@selector(showalert)]; [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil]; break; case SLComposeViewControllerResultDone: [self performSelector:@selector(showalert1)]; [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil]; break; default: break; } }]; 

Poster un commentaire ci-dessus en réponse:

Avez-vous essayé de définir le completionHandler avant de présenter le View Controller?