2012-10-09 13 views
7

Ciao Ho due UIButton in un'app iOS. Uno è quello di pubblicare su Twitter il secondo è quello di pubblicare su Facebook. Il pulsante di Facebook funziona perfettamente, tuttavia il tweet mi sta dando dei problemi, il foglio di tweet si aprirà con il testo popolato, tuttavia ci vogliono due tocchi del pulsante Annulla per chiudere. Se toccherò, il tweet verrà inviato e il foglio verrà rimosso, ma la mia app si blocca e non risponde. Ho incluso entrambi i bit di codiceL'app si blocca dopo l'invio del 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

Avere l'esatto stesso problema, hai trovato una soluzione? –

risposta

18

Stai presentando il ViewController "myTweet"

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

ma non c'è è respingere ... istruzione nel completionHandler

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

inserendo il codice di rimozione dopo che l'istruzione switch ha risolto il problema per me, tuttavia è strano che non sia necessario per Facebook ... –

+4

vedere il seguente post http://stackoverflow.com/questions/12617490/twitter-post-ios6 -cancel-button-issue? rq = 1 – sjbuchanan007

+0

Questo è necessario sia in ResultCancelled sia su ResultDone per Twitter ma non su Facebook – RanLearns

Problemi correlati