首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在UIView上关闭SFSafariViewController

如何在UIView上关闭SFSafariViewController
EN

Stack Overflow用户
提问于 2018-03-02 16:19:35
回答 1查看 1.5K关注 0票数 1
代码语言:javascript
复制
class CustomScreen: UIView, SFSafariViewControllerDelegate {
@IBAction func webPageBtnAction(_ sender: Any) {
    if #available(iOS 9.0, *) {
        let svc = SFSafariViewController(url: NSURL(string: "https://stackoverflow.com/")! as URL)
        svc.delegate = self
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.window?.rootViewController = svc
    } else {
        // Fallback on earlier versions
    }
}

@available(iOS 9.0, *)
func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
    controller.dismiss(animated: false, completion: nil)
}
}

出于某种原因,我不能驳回SFSafariViewController。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 17:08:09

由于您在代码中替换了rootViewController (对于这种情况来说,这是一种不好的做法),因此您应该简单地呈现SFSafariViewController

代码语言:javascript
复制
let svc = SFSafariViewController(url: NSURL(string: "https://stackoverflow.com/")! as URL)
svc.delegate = self
UIApplication.shared.keyWindow?.rootViewController?.present(svc, animated: true, completion: nil)

据我所知,这是一种糟糕的做法,因为safariViewControllerDidFinish永远不会被调用,因为CustomScreen将从当前rootViewController的替换中释放

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49065193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档