Ответ 1
Не нажимайте SFSafariViewController с помощью метода pushViewController:animated:
, вместо этого используйте метод presentViewController:animated:completion:
.
Контроллер просмотра Safari будет представлен стандартной анимацией push.
2 странные вещи случаются, когда я пытаюсь нажать Safari ViewController:
Его адресная панель с кнопкой "Готово" находится под моей навигационной панелью;
Метод делегата safariViewControllerDidFinish: не вызывается при нажатии кнопки возврата.
Я не думаю, что Apple одобрит это поведение, поэтому:
Есть ли способ отключить Safari ViewController без этих проблем?
Не нажимайте 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
}
}