如何隐藏SFSafariViewController?

时间:2015-10-12 20:47:04

标签: ios iphone uiviewcontroller

SFSafariViewController允许网页访问存储在Safari中的cookie。我想用SFSafariViewController执行一些后台任务来使用cookie。但是我不希望用户看到SFSafariViewController。

有没有办法隐藏SFSafariViewController并允许用户在呈现SFSafariViewController时触摸屏幕?

2 个答案:

答案 0 :(得分:2)

Class SFSafariViewControllerClass = NSClassFromString(@"SFSafariViewController");
if (SFSafariViewControllerClass) {
    id safController = [[SFSafariViewControllerClass alloc] initWithURL:[NSURL URLWithString:urlString]];

    UIViewController *windowRootController = [[UIViewController alloc] init];

    self.secondWindow = [[UIWindow alloc] initWithFrame:CGRectZero];
    self.secondWindow.rootViewController = windowRootController;
    [self.secondWindow makeKeyAndVisible];
    [self.secondWindow setAlpha:0];

    [windowRootController presentViewController:safController animated:YES completion:^{
        [self.secondWindow.rootViewController dismissViewControllerAnimated:NO completion:NULL];
    }];
}

您可以使用该代码隐藏SFSafariViewControllerClass

答案 1 :(得分:2)

如果您计划提交到App Store,请不要这样做。

来自https://developer.apple.com/app-store/review/guidelines/

  

5.1.1(iv)必须使用SafariViewContoller向用户显示信息;控制器可能不会被隐藏或遮挡   其他视图或图层。此外,应用程序可能不会使用   SafariViewController在他们不知情的情况下跟踪用户   同意。

如果您需要访问cookie,请改用WKWebView。见Getting all cookies from WKWebView。但是,这些cookie不会与Safari共享。