在 UIWebview 之类的 ViewController 中使用 SafariViewController
Posted
技术标签:
【中文标题】在 UIWebview 之类的 ViewController 中使用 SafariViewController【英文标题】:Use SafariViewController inside a ViewController like UIWebview 【发布时间】:2016-09-23 18:02:18 【问题描述】:我想使用 Safari cookie 来验证我的应用的用户。我可以用 SFSafariViewController 做到这一点。但问题是我的应用程序中有 UIWebView 来显示一些信息。即使用户使用 safari 登录,他们也会被要求通过 UIWebView 再次登录。我想同步这个。意味着如果用户通过 safari 登录,他不应该在应用程序中再次登录。我知道 safari 和 uiwebview 不共享 cookie,所以我想将所有内容移至 safari。是否可以在视图控制器中显示 safari?
谢谢, 里查
【问题讨论】:
【参考方案1】:PopoverViewController 方法
let vc = SFSafariViewController(url: URL, entersReaderIfAvailable:false)
vc.modalPresentationStyle = .popover
vc.preferredContentSize = CGSize(width: self.view.frame.width/2, height: self.view.frame.height/2) // Or put any size
if let popover = vc.popoverPresentationController
popover.sourceView = self.view // You can also put the source button
popover.permittedArrowDirections = .any
popover.sourceRect = CGRect(x: 0, y: 0, width: 85, height: 30)
popover.delegate = self
self.present(vc, animated: true, completion: nil)
然后声明这个子类:
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate
但这仅适用于 iPad,所以这样说:
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle
return .none
Result
【讨论】:
以上是关于在 UIWebview 之类的 ViewController 中使用 SafariViewController的主要内容,如果未能解决你的问题,请参考以下文章
iPhone - UIPickerView 和 UIWebView 上的手势