【问题标题】:Display Facebook Compose View after Twitter Compose View on iOS在 iOS 上的 Twitter 撰写视图之后显示 Facebook 撰写视图
【发布时间】:2012-12-19 23:34:20
【问题描述】:

我有一个应用程序,用户可以选择通过 Twitter 和 Facebook 与人们分享更新,如果他们希望通过两者分享,那么事情就很棘手。如果您尝试一个接一个地调用他们的 SLComposeViewController,则只会出现 Twitter,而 Facebook 则根本不会出现。我试图通过使用 NSNotifications 来解决这个问题,但它们似乎从未被调用,并通过使用完成处理程序,但这些似乎永远不会工作,只会让整个 UI 变得奇怪。谁能帮助我如何一个接一个地显示 SLComposeView?我已经用头撞墙四个小时了。

【问题讨论】:

    标签: ios facebook twitter nsnotifications slcomposeviewcontroller


    【解决方案1】:

    假设您尝试使用presentViewController 的完成处理程序并得到不正确的结果,这是另一种方法。您可以像往常一样呈现第一个作曲家,然后在作曲家的完成块中呈现第二个作曲家。一旦第一个作曲家被解散,就会立即调用此完成处理程序。

    在我在下面设置的示例中,仅当第一个作曲家返回 SLComposeViewControllerResultDone 时才会显示第二个作曲家,从而允许您在用户点击取消时一起关闭所有作曲家。但是,如果您不想要此功能,可以通过保留呈现第二个作曲家的逻辑,但同时删除 switch 语句来轻松删除它。此代码经过测试,应该会产生您正在寻找的结果。希望对您有所帮助!

    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
        SLComposeViewController *facebookComposer = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
        [facebookComposer setInitialText:@"facebook"];
        [facebookComposer setCompletionHandler:^(SLComposeViewControllerResult result) {
    
            switch (result) {
                case SLComposeViewControllerResultCancelled:
                    NSLog(@"Post Canceled, bail out");
                    break;
                case SLComposeViewControllerResultDone:
    
                    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {
                        SLComposeViewController *twitterComposer = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
                        [twitterComposer setInitialText:@"twitter"];
                        [twitterComposer setCompletionHandler:^(SLComposeViewControllerResult result) {
                            NSLog(@"done with both sharing options");
                        }];
                        [self presentViewController:twitterComposer animated:YES completion:nil];
                    }
    
                    break;
    
                default:
                    break;
            }
        }];
        [self presentViewController:facebookComposer animated:YES completion:nil];
    }
    

    【讨论】:

    • 这与我一直在尝试的非常接近,除了我试图使用 __weak 引用 self.似乎最简单的方法就是在我上面的第一个方法中复制该代码,如果用户只想发布到另一个来调用另一个不会使用完成处理程序的方法。谢谢你的帮助:)
    • @user1861474 您能否举一个代码示例说明您正在尝试做什么?我也许可以调整它!并且任何时候!如果我的回答有帮助,别忘了标记为正确:)
    • 在我的应用程序中,当用户添加条目时,他们也可以与朋友分享,他们通过切换 UISwitches(或离开它们)来指示他们希望发布到哪些服务。如果他们需要同时发布,那么我需要一种方法来管理它。我使用上面的方法并试图让它调用一个单独的方法,因为它会使代码更有效率,但现在我使用上面的方法和三个单独的方法。如果您切换服务以首先显示 Twitter,似乎上述示例也会中断。这是一个我无法完全解释的 SLSocial 框架问题。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 2021-04-09
    • 2015-01-20
    • 2012-08-10
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    相关资源
    最近更新 更多