Search code examples
iosswiftsfsafariviewcontrollerdelegatesafariservices

Using Safariservices swift how to code around the small black box


Using SFSafariViewController, works well but for some reason when I go to this webpage [knowitall.ch], it starts up by opening a zoomed view? with a small black box that I need to press to get the full webpage.

enter image description here

My code couldn't be simpler.

if let url = URL(string: url2U) {
        let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true)
        vc.delegate = self
        present(vc, animated: true)
    }

If I press the box I get the correct view, how to code around this so I open with the second view here? black box not required :)

enter image description here


Solution

  • That "zoomed view" is the Reader Mode. It shows up because you asked for it. Set entersReaderIfAvailable to false if you don't want it. Also, init(url:entersReaderIfAvailable:) has been deprecated in iOS 11. You need to initialize it with a config object:

    if let url = URL(string: url2U) {
        let vc: SFSafariViewController
    
        if #available(iOS 11.0, *) {
            let config = SFSafariViewController.Configuration()
            config.entersReaderIfAvailable = false
            vc = SFSafariViewController(url: url, configuration: config)
        } else {
            vc = SFSafariViewController(url: url, entersReaderIfAvailable: false)
        }
        vc.delegate = self
        present(vc, animated: true)
    }