2012-10-09 21 views
7

Witam Mam dwa UIButtony w aplikacji na iOS. Jedną z nich jest publikacja do Twittera, druga to publikowanie na Facebooku. Przycisk facebook działa perfekcyjnie, ale tweet sprawia mi problemy, tweetowy arkusz otworzy się wraz z wypełnionym tekstem, jednak do zignorowania potrzeba dwóch kliknięć przycisku anulowania. Jeśli kliknę przycisk Wyślij, wiadomość zostanie wysłana, a arkusz odrzucony, ale moja aplikacja zawiesza się i przestaje odpowiadać. Mam włączone oba bity koduAplikacja zawiesza się po wysłaniu tweeta

- (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

Mając dokładny ten sam problem, czy znalazłeś poprawkę? –

Odpowiedz

18

Jesteś prezentujący ViewController "myTweet"

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

ale nie ma się oddalić ... oświadczenie w completionHandler

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

wprowadzenie kodu zwolnienia po instrukcji switch naprawiło ten problem dla mnie, jednak dziwne, że nie jest potrzebne na Facebooku ... –

+4

zobacz następujący wpis http://stackoverflow.com/questions/12617490/twitter-post-ios6 -cancel-button-issue? rq = 1 – sjbuchanan007

+0

Jest to potrzebne zarówno w ResultCancelled, jak i ResultDone na Twitterze, ale nie na Facebooku – RanLearns

Powiązane problemy