2012-10-09 18 views
7

Hola Tengo dos UIButtons en una aplicación de iOS. Una es publicar en Twitter, la segunda es publicar en Facebook. El botón de Facebook funciona a la perfección, sin embargo, el tweet me está causando algunos problemas, la hoja de tweets se abrirá con el texto relleno, sin embargo, se tardan dos toques en el botón cancelar para descartar. Si toco en Enviar, se enviará el tweet y se desestimará la hoja, pero mi aplicación se congela y deja de responder. He incluido dos trozos de códigoLa aplicación se congela después de enviar un tweet

- (IBAction)postTweet:(id)sender { 

// if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]){ 

    myTweet = [[SLComposeViewController alloc]init]; 

    myTweet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 

    NSString *tweetString = [[NSString alloc]initWithFormat:@"%@\n%@\nvia @ValuatorApp", pdOne.text, pdTwo.text]; 

    [myTweet setInitialText:tweetString]; 

    [myTweet addURL:[NSURL URLWithString:@"http://sjb007.me/TheValuator"]]; 

    [self presentViewController:myTweet animated:YES completion:nil]; 
// } 
[myTweet setCompletionHandler:^(SLComposeViewControllerResult result) { 

    NSString *output = [[NSString alloc]init]; 

    switch (result) { 
     case SLComposeViewControllerResultCancelled: 
      output = @"Twitter Post Cancelled"; 
      break; 
     case SLComposeViewControllerResultDone: 
      output = @"Twitter post Succesful"; 
      break; 
     default: 
      break; 
    } 
    NSLog(@"%@",output); 

}]; 
} 

- (IBAction)postFacebook:(id)sender { 

// if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]){ 

    myTweet = [[SLComposeViewController alloc]init]; 

    myTweet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

if (pd3 != 0) { 
    NSString *facebookString = [[NSString alloc]initWithFormat:@"%@\n%@\n%@", pdOne.text,pdTwo.text, pdThree.text]; 
    [myTweet setInitialText:facebookString]; 

} 
else if (pd3 == 0){ 
    NSString *facebookString = [[NSString alloc]initWithFormat:@"%@\n%@\n", pdOne.text,pdTwo.text]; 
    [myTweet setInitialText:facebookString]; 

} 

// [myTweet addImage:[UIImage imageNamed:@"Photo Jun 02, 22 46 37.jpg"]]; 

[myTweet addURL:[NSURL URLWithString:@"http://sjb007.me/TheValuator"]]; 

[self presentViewController:myTweet animated:YES completion:nil]; 
// } 
[myTweet setCompletionHandler:^(SLComposeViewControllerResult result) { 

    NSString *output = [[NSString alloc]init]; 

    switch (result) { 
     case SLComposeViewControllerResultCancelled: 
      output = @"Facebook Post Cancelled"; 
      break; 
     case SLComposeViewControllerResultDone: 
      output = @"Facebook post Succesful"; 
      break; 
     default: 
      break; 
    } 
    NSLog(@"%@",output); 

}]; 
} 
+1

Tener la exacta mismo problema, ¿encontró una solución? –

Respuesta

18

Usted está presentando el ViewController "myTweet"

[self presentViewController:myTweet animated:YES completion:nil]; 

pero sin descartar ... está comunicado en su completionHandler

[self dismissViewControllerAnimated:YES completion:nil]; 
+2

poner el código de descarte después de la instrucción de cambio me arregló este problema, sin embargo es extraño que no sea necesario para Facebook ... –

+4

consulte la siguiente publicación http://stackoverflow.com/questions/12617490/twitter-post-ios6 -cancel-button-issue? rq = 1 – sjbuchanan007

+0

Esto es necesario tanto en ResultCancelled como en ResultDone para Twitter pero no en Facebook – RanLearns

Cuestiones relacionadas