【问题标题】:Facebook UIActivityViewController is Missing the Cancel and Post ButtonsFacebook UIActivityViewController 缺少取消和发布按钮
【发布时间】:2016-05-06 16:58:10
【问题描述】:

当我的应用程序打开 Facebook UIActivityViewController 时,Facebook 屏幕顶部没有导航栏,也没有取消或发布按钮 - 退出屏幕的唯一方法是终止应用程序。我看到的其他应用程序在 Facebook 屏幕顶部有一个额外的导航栏,其中包含取消和发布按钮。

这是我正在使用的代码:

        NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com"];
        NSArray *activityItems = @[url];

        // Put together the UIActivityViewController
        UIActivityViewController *activityVC = [[UIActivityViewController alloc]
                                                initWithActivityItems:activityItems
                                                applicationActivities:nil];

        activityVC.excludedActivityTypes = @[UIActivityTypePrint,
                                             UIActivityTypeCopyToPasteboard,
                                             UIActivityTypeAssignToContact,
                                             UIActivityTypeSaveToCameraRoll,
                                             UIActivityTypeAirDrop,
                                             UIActivityTypePostToVimeo,
                                             UIActivityTypePostToFlickr,
                                             UIActivityTypeAddToReadingList];

        // Present the UIActivityViewController
        [self presentViewController:activityVC
                           animated:YES
                         completion:nil];

Twitter、电子邮件和 SMS 屏幕都按预期显示。 Facebook 是唯一有问题的。

其他一些注意事项:我注意到,当我在此应用上打开 Facebook 分享时,状态栏变为黑色并带有白色文本。在我创建的另一个测试应用程序中,状态栏看起来是灰色的,带有黑色文本。不知道为什么/这指向什么,但可能是一个线索。

这个问题似乎是应用程序范围内的,因为我有 3 个可以调用共享的位置,并且在所有 3 个实例中都发生了。

附加图像。 “收件人:公共”工具栏上方应该有一个导航栏。

任何想法将不胜感激。

【问题讨论】:

  • 我创建了新项目并将您的上述操作添加为一个按钮事件的操作,并且在导航栏具有取消和发布按钮的情况下工作得非常好。你可以在这个链接看到截图:drive.google.com/file/d/0B0FNcjA1N299NWdmZGZQWC1KbzA/…
  • fb 版本可能有问题,或者 fb 帐户可能有问题。否则你的代码是完美的......因为它在我的情况下工作。
  • 对于状态栏颜色和导航栏颜色,你应该在stackoverflow上检查这个问题:stackoverflow.com/questions/19794317/…
  • 谢谢@MehulThakkar - 我实际上并不关心状态栏的颜色,我只是认为这可能是有关问题的线索。我还创建了一个新应用程序并且代码正常工作 - 所以现在我认为这是我的应用程序中的一个问题,但我不知道是什么。
  • 你能检查一下...已经对这个 [[UINavigationbar 外观] blah.. blah..] 做了一些事情,可能是由于那个.. 否则我不认为有你的代码有什么问题

标签: ios xcode facebook uiactivityviewcontroller


【解决方案1】:

您可以根据需要隐藏导航栏。

所以,添加下面的代码,如果你想在UIActivityViewController 存在时显示导航,然后在UIActivityViewController 被关闭时隐藏它:-

//this will be called when the UIActivityViewController  will be dismissed, so we are hiding the navigation

[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
                [[UINavigationBar appearance] setHidden:YES];


        }];



//this will be called when the UIActivityViewController  will be shown, so we are enabling the navigation mean unhiding it.

[self presentViewController:activityVC animated:YES completion:^{
                 [[UINavigationBar appearance] setHidden:NO]

                  //you can also add code to customize status bar 

          }];

【讨论】:

  • 干得好,兄弟……你为我解决了一个大问题。我在过去两个月里一直面临这个问题:)
  • setCompletionHandler 在 iOS 8+ 中已弃用,它更新为 setCompletionWithItemsHandler。 [activityVC setCompletionWithItemsHandler:^(NSString *activityType, BOOL 完成, NSArray *returnedItems, NSError *activityError) { [[UINavigationBar 外观] setHidden:YES]; }];
  • 也适用于城市飞艇。看起来框架编写者对他们的代码必须工作的大量场景一无所知。
【解决方案2】:

我创建了新应用并复制粘贴了您的按钮操作代码。它运行良好。你可以在这里查看它的图片:https://drive.google.com/file/d/0B0FNcjA1N299NWdmZGZQWC1KbzA/view?usp=sharing

据我所知,如果您在您的应用程序中使用 [UINavigationBar appearance] 做了一些事情,那么只有它才会出现问题。请检查一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2015-08-27
    • 2017-04-29
    • 1970-01-01
    • 2012-02-14
    相关资源
    最近更新 更多