【问题标题】:App Freezes after sending tweet发送推文后应用程序冻结
【发布时间】:2026-02-18 09:10:01
【问题描述】:

您好,我在 iOS 应用中有两个 UIButton。一是在推特上发帖,二是在脸书上发帖。 facebook 按钮完美运行,但推文给我带来了一些问题,推文表将打开填充文本,但需要两次点击取消按钮才能关闭。如果我点击发送,则将发送推文并关闭工作表,但我的应用程序会冻结并无响应。我已经包含了这两个代码

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

}];
}

【问题讨论】:

  • 遇到同样的问题,您找到解决方法了吗?

标签: ios xcode freeze social slcomposeviewcontroller


【解决方案1】:

您正在展示 ViewController "myTweet"

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

但是你的completionHandler中没有dismiss...语句

[self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

  • 在 switch 语句为我解决了这个问题之后将关闭代码放入,但奇怪的是 Facebook 不需要它......
  • 见下面的帖子*.com/questions/12617490/…
  • 这在 ResultCancelled 和 ResultDone 中都需要,但 Facebook 不需要