在 SFSafariViewController 上打开 WebView 链接
Posted
技术标签:
【中文标题】在 SFSafariViewController 上打开 WebView 链接【英文标题】:Open WebView Links on SFSafariViewController 【发布时间】:2015-11-25 19:04:35 【问题描述】:应用程序在 UIWebView 中打开文章,我需要在 SFSafariViewController 上打开这些文章的链接(这是强制性的)。到目前为止,它将在 webview 上打开并破坏我的用户体验。我的 WebView 加载 html 字符串并加载内容,如下所示。
override func viewWillAppear(animated: Bool)
super.viewWillAppear(animated)
self.webView.loadHTMLString(article.content, baseURL: nil)
有了内容,就会出现链接,如下图所示。 screenshot of the app
如何使我的文章的这些链接在 SFSafariViewController 上打开?由于它来自 HTML 字符串并且我不知道文章链接 url,我该怎么办?
【问题讨论】:
UIWebView =),对不起...编辑错误 【参考方案1】:那行得通。创建一个名为 allowLoad 的 Bool 变量以允许或不允许加载 webview 内容。在 webview 上加载文章后,allowLoad 将变为 false,因此下一个请求只能在链接触摸时开始,然后它将显示 SFSafariViewController(我不知道你是否理解,所以你可以问我任何问题)
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool
if (navigationType == UIWebViewNavigationType.LinkClicked)
let url = request.URL;
if #available(ios 9.0, *)
let sfViewController = SFSafariViewController(URL:url!, entersReaderIfAvailable: true)
self.presentViewController(sfViewController, animated: true, completion: () -> Void in
print("May the force be with you!")
)
else
return allowLoad
func webViewDidFinishLoad(webView: UIWebView)
return allowLoad = false
【讨论】:
以上是关于在 SFSafariViewController 上打开 WebView 链接的主要内容,如果未能解决你的问题,请参考以下文章
FBSDK 登录 - SFSafariViewController 已禁用?
是否可以在 UITabBarController 内显示 SFSafariViewController?
在 SFSafariViewController 上设置完成按钮颜色