首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在iOS 9中,为什么推送SFSafariViewController而不是以模式呈现?

在iOS 9中,为什么推送SFSafariViewController而不是以模式呈现?
EN

Stack Overflow用户
提问于 2016-02-25 21:45:06
回答 4查看 10.8K关注 0票数 42

我通过在UIViewController实例上调用presentViewController:animated:completion:来呈现一个SFSafariViewController

结果是它被推入(从右边滑入),就像我在UINavigationController实例上调用pushViewController:animated:一样。我已经验证了这一切都发生在主队列上。并且呈现的视图控制器本身并不是一个模态(这无论如何都不重要,但为了以防万一,我们可以排除它)。

如果我用UIViewController替换SFSafariViewController,它会像预期的那样工作,它以模态的形式呈现。

代码语言:javascript
复制
weakSelf.oAuthViewController = [[SFSafariViewController alloc] initWithURL:url];
[viewController presentViewController:weakSelf.oAuthViewController animated:YES completion:nil];

你知道为什么或者如何解决这个问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-19 20:55:29

下面是获取SFSafariViewController垂直模式表示的一种简单方法

代码语言:javascript
复制
let safari = SFSafariViewController(URL: url)
safari.modalPresentationStyle = .overFullScreen
presentViewController(safari, animated: true, completion: nil)
票数 58
EN

Stack Overflow用户

发布于 2016-03-04 03:00:26

我也有同样的问题。此外,即使您没有设置代理,done按钮也可以工作。不知道为什么会这样。然而,我发现了一个解决办法:将safari控制器包装在导航控制器中,并隐藏导航栏。

代码语言:javascript
复制
func openURL(url:NSURL) {

    if #available(iOS 9.0, *) {
        let safariController = SFSafariViewController(url: url)
        safariController.delegate = self
        let navigationController = UINavigationController(rootViewController: safariController)
        navigationController.setNavigationBarHidden(true, animated: false)
        self.present(navigationController, animated: true, completion: nil)
    } else {
        UIApplication.sharedApplication().openURL(url)
    }
}
票数 26
EN

Stack Overflow用户

发布于 2017-10-15 10:15:41

要使用默认的模式转换样式,只需将转换代理设置为self即可。

代码语言:javascript
复制
let svc = SFSafariViewController(url: url)
svc.transitioningDelegate = self //use default modal presentation instead of push
present(svc, animated: true, completion: nil)

您需要在视图控制器中采用UIViewControllerTransitioningDelegate协议,但没有必需的功能来实现。

这是在Session 225 at WWDC, What's New in Safari View Controller中提到的。

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

https://stackoverflow.com/questions/35629063

复制
相关文章

相似问题

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