SFSafariViewController 显示任何 URL 的空白屏幕
Posted
技术标签:
【中文标题】SFSafariViewController 显示任何 URL 的空白屏幕【英文标题】:SFSafariViewController displays empty screen for any 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 控制器。它正在返回正确的视图控制器(我已经放置了一个断点并经过验证)
这其实不太对。我之前尝试在容器中以自定义方式显示的子视图控制器(即技术上未显示)显示时发生过这种情况。演示文稿似乎有效,但结果与您的屏幕截图相同。从容器中呈现使其工作正常。您是否尝试在包含的视图控制器上呈现?无论如何,您粘贴的代码没有问题,因此问题必须在其他地方。
【参考方案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()
。
【讨论】:
你能发布一个完整的例子如何使用它吗?以上是关于SFSafariViewController 显示任何 URL 的空白屏幕的主要内容,如果未能解决你的问题,请参考以下文章
SFSafariViewController 不是全屏/顶部显示的内容
Swift SFSafariViewController 目前显示空白页
如何让 WKWebView 像 SFSafariViewController 一样全屏显示?