WebKitPlus
WKWebView 的支持库。
要求
- iOS 12.0 及以上
使用方法
WKUIDelegatePlus
WKUIDelegatePlus
为 WKUIDelegate
提供了标准实现(从 JavaScript 发送警报)。
override public func viewDidLoad() {
super.viewDidLoad()
UIDelegate = WKUIDelegatePlus(self)
webView.UIDelegate = UIDelegate
}
WebViewObserver
WKWebView具备键值观察的属性,这真是太棒了,但键值观察真的很丑陋。《WebViewObserver》通过闭包将其实现为可观察。
lazy var observer: WebViewObserver = WebViewObserver(self.webView)
override public func viewDidLoad() {
super.viewDidLoad()
observer.onTitleChanged = { [weak self] in self?.title = $0 }
observer.onProgressChanged = { [weak self] in self?.progressbar.progress = $0 }
}
导航中的身份验证
alertForAuthentication
函数会创建一个UIAlertController
来输入身份验证信息。
/// in `WKWebNavigationDelegate` object
func webView(webView: WKWebView, didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
guard let alert = alertForAuthentication(challenge, completionHandler) else {
// Should call `completionHandler` if `alertForAuthentication` return `.None`.
completionHandler(.PerformDefaultHandling, nil)
return
}
presentViewController(alert, animated: true, completion: nil)
}
ZenWebViewController
ZenWebViewController
是一个包含WKWebView
的简单视图控制器。您可以使用它实现简单的网页浏览器。
作者
@yashigani
许可证
WebKitPlus在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。