Skip to content

Otafuku provides utility classes to use WKWebView in Swift.

License

Notifications You must be signed in to change notification settings

michaelkamphausen/Otafuku

 
 

Repository files navigation

Otafuku

Language CocoaPods License Issues

Otafuku provides utility classes to use WKWebView.

Features

  • WebViewUIController to handle WKUIDelegate methods by presenting an alert as usual browsers do.
  • WebViewPropertyObserver to notify WKWebView property value change via a registered closure and Swift enum. With this class, no KVO code is needed to know WKWebView property value change.

Usage

WebViewUIController

WebViewUIController handles WKUIDelegate.
As shown below, simply declare a property of WebViewUIController and set it to WKWebView.UIDelegate in UIViewController.viewDidLoad.

class ViewController: UIViewController {
    let uiDelegate = WebViewUIController()

    override func viewDidLoad() {
        super.viewDidLoad()
        webView.UIDelegate = uiDelegate
    }
}

WebViewPropertyObserver

WebViewPropertyObserver notifies WKWebView property value change.
As shown below, declare a property of WebViewPropertyObserver to retain its object throughout the ViewController's life cycle.
To initialize, pass a WKWebView object and a closure handling WKWebView's property change.

class ViewController: UIViewController {
    @IBOutlet var progressView: UIProgressView!
    @IBOutlet var backItem: UIBarButtonItem!
    @IBOutlet var forwardItem: UIBarButtonItem!

    var propertyObserver: WebViewPropertyObserver?

    override func viewDidLoad() {
        super.viewDidLoad()
        propertyObserver = WebViewPropertyObserver(webView: webView, handler:handleWebViewPropertyChange)
    }

    func handleWebViewPropertyChange(property: WebViewPropertyObserver.WebViewProperty) {
        switch property {
        case .Title(let title):
            navigationItem.title = title
        case .URL(let URL):
            // do something with URL
            break
        case .CanGoBack(let canGoBack):
            backItem.enabled = canGoBack
        case .CanGoForward(let canGoForward):
            forwardItem.enabled = canGoForward
        case .EstimatedProgress(let progress):
            progressView.progress = progress
        case .Loading(let loading):
            // do something with loading
            break
        case .HasOnlySecureContent(let secureContent):
            // do something with secureContent
            break
        }
    }
}

Requirements

  • iOS 8.0+
  • Swift 3.0
  • Xcode 8.0

Installation

  • Install with CocoaPods
platform :ios, '8.0'
use_frameworks!

pod 'Otafuku'

License

Otafuku is released under the MIT license. See LICENSE for details.

About

Otafuku provides utility classes to use WKWebView in Swift.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 64.9%
  • Shell 25.7%
  • Objective-C 7.2%
  • Ruby 2.2%