【问题标题】:SFSafariViewController displays empty screen for any URLSFSafariViewController 显示任何 URL 的空白屏幕
【发布时间】:2017-08-11 18:41:38
【问题描述】:

我正在尝试使用 SFSafariViewController 显示 URL。这是我的代码:(topmostController 指向,是的,最顶层的控制器)

SFSafariViewController *safariVc = [[SFSafariViewController alloc] initWithURL:url];
[[UIViewController topmostController] presentViewController:safariVc animated:YES completion:nil];

无论我尝试显示的 URL 是什么,我都会收到:

地址栏空白无响应,刷新按钮不做任何事情,底部按钮全部禁用,没有页面,顶部栏布局混乱。

我已经多次尝试使用多个域,但始终相同。我做错了什么?

【问题讨论】:

  • 问题可能是[UIViewController topmostController]的实现。你能把那个贴出来吗?根据我的经验,当您尝试在无法真正呈现的视图控制器上呈现时会发生这种情况(据系统所知)
  • @Dima 因为它只是一个返回最顶层控制器的助手。如果它不起作用,则根本不会显示 Safari 控制器。它正在返回正确的视图控制器(我已经放置了一个断点并经过验证)
  • 这其实不太对。我之前尝试在容器中以自定义方式显示的子视图控制器(即技术上未显示)显示时发生过这种情况。演示文稿似乎有效,但结果与您的屏幕截图相同。从容器中呈现使其工作正常。您是否尝试在包含的视图控制器上呈现?无论如何,您粘贴的代码没有问题,因此问题必须在其他地方。

标签: ios objective-c uiviewcontroller ios10 sfsafariviewcontroller


【解决方案1】:

斯威夫特 4.2:

let safariViewController = SFSafariViewController(url: URL)
view.window?.rootViewController?.present(safariViewController, animated: true)

【讨论】:

    【解决方案2】:

    请试试这个方法。

    1、查看UIApplication.shared.keyWindow

    2、该keyWindow上是否存在源ViewController?

    3、如果不存在,则对该源窗口执行makeKey()

    【讨论】:

    • 你能发布一个完整的例子如何使用它吗?
    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2015-10-03
    • 2020-07-17
    相关资源
    最近更新 更多