2012-10-09 22 views
7

Hallo Ich habe zwei UIButtons in einer iOS App. Eine ist es, auf Twitter zu posten, die zweite ist auf Facebook zu posten. Der Facebook-Button funktioniert perfekt, aber der Tweet bringt mir einige Probleme, das Tweet-Blatt wird mit dem aufgefüllten Text geöffnet, aber es braucht zwei Antippen des Abbrechen-Buttons, um ihn zu schließen. Wenn ich auf "Senden" klicke, wird der Tweet gesendet und das Blatt wird gelöscht, aber meine App reagiert nicht mehr und reagiert nicht mehr. Ich habe beide Bit-Code enthaltenApp friert nach dem Senden von 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

Mit den genauen Gleiches Problem, hast du eine Lösung gefunden? –

Antwort

18

Sie präsentieren die Viewcontroller "myTweet"

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

aber es wird nicht entlassen ... Anweisung in completionHandler

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

Putting den Kündigungscode nach der switch-Anweisung behoben dieses Problem für mich, aber es ist seltsam, dass es nicht für Facebook benötigt ... –

+4

siehe den folgenden Beitrag http://StackOverflow.com/Questions/12617490/twitter-post-ios6 -cancel-button-issue? rq = 1 – sjbuchanan007

+0

Dies wird sowohl in ResultCancelled als auch in ResultDone für Twitter benötigt, nicht aber für Facebook – RanLearns

Verwandte Themen