当我尝试推送Safari ViewController时,出现了两个奇怪的问题:
它带有“完成”按钮的地址栏位于我的导航栏下方;
当我按返回按钮时,代理方法safariViewControllerDidFinish:不会被调用。
我认为苹果不会批准这种行为,所以:
有没有一种方式可以推送Safari ViewController而没有这些问题?
pushViewController:animated:
方法,而是使用presentViewController:animated:completion:
方法来推出SFSafariViewController。
Safari视图控制器将会以标准的推出动画来呈现。
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
}
}