Как нажать SFSafariViewController?

Когда я пытаюсь нажать Safari ViewController, происходят 2 странные вещи:

  1. Его адресная строка с кнопкой "Готово" находится под моей панелью навигации;

  2. Метод делегата safariViewControllerDidFinish: не вызывается при нажатии кнопки назад.

Я не думаю, что Apple одобрит это поведение, поэтому:

Есть ли способ подтолкнуть Safari ViewController без этих проблем?

2 ответа

Решение

Не выдвигайте SFSafariViewController с помощью pushViewController:animated: вместо этого используйте метод presentViewController:animated:completion: метод.

Контроллер представления Safari будет представлен со стандартной анимацией push.

В дополнение к комментариям rckoenes, единственная другая опция, которую я вижу, это скрыть панель навигации при представлении SFSafariViewController.

import UIKit
import SafariServices

class ViewController: UIViewController {
    @IBAction func openBrowser(sender: AnyObject) {
        let safariViewController = SFSafariViewController(URL: NSURL(string: "http://your.url")!)
        safariViewController.delegate = self

        // hide navigation bar and present safari view controller
        navigationController?.navigationBarHidden = true
        navigationController?.pushViewController(safariViewController, animated: true)
    }
}

extension ViewController: SFSafariViewControllerDelegate {
    func safariViewControllerDidFinish(controller: SFSafariViewController) {
        // pop safari view controller and display navigation bar again
        navigationController?.popViewControllerAnimated(true)
        navigationController?.navigationBarHidden = false
    }
}
Другие вопросы по тегам