Migrating from UIWebview to WKWebview in swift

Updated 11 December 2023

Save
Migrating from UIWebview to WKWebview in swift

The UIWebview class has been introduced since iOS 2.0 to show HTML content inside your app, but iOS 8.0 introduced WKWebview as an alternative. Let’s discuss below what is the differences between them.

Difference Between UIWebview and WKWebView

UIWebview is a part of UIKit, so it is available to your apps as standard. You don’t need to import anything, it will be there by default.

But WKWebView is run in a separate process to your app, You need to import Webkit to use WKWebView in your app. This means WkWebView loads web pages faster and more efficiently than UIWebView and also doesn’t have as much memory overhead for you.

We can use CSS in our WKWebView to handle the layouts according to our usage.

Let’s start integrating WKWebview in our project

Step-1: Firstly, create a new project with a Single View App.

create a new project with a Single View App

Step-2:  Then, open “Main.storyboard” and on your ViewController’s view drag  “Webkit View”. Select a WKWebView and place it on your view of a view controller.

webkit view

Step-3 : Now, open ViewController class and import Webkit then create IBOutlet for “WKWebview”.

import Webkit then create IBOutlet for WKWebview

Step-4: Then, add the below code in your viewDidLoad method to load the webpage.

Step-5: Finally, run your App and the webpage shows up.

wkwebview integration

Responding WKWebview Events with WKNavigationDelegate:

You can interact with the webView using navigationDelegate of type WKNavigationDelegate, which responds to navigation events.

First, add WKNavigationDelegate in your class and ser the navigationDelegate property of webview to self.

Responding WKWebview Events with WKNavigationDelegate

Now, let’s add methods for WKNavigationDelegate.

1. shouldStartLoadwithRequest function in UIWebview will be equivalent to decidePolicyForNavigationAction in WKWebview.

2. webViewDidStartLoad function in UIWebview will be equivalent to didStartProvisionalNavigation in WKWebview.

3. didFailLoadWithError function in UIWebview will be equivalent to didFailNavigation in WKWebview.

4. webViewDidFinishLoad function in UIWebview will be equivalent to didFinishNavigation in WKWebview.

You can check all WKWebview delegates from below link-

https://developer.apple.com/documentation/webkit/wkwebview

Thank you for reading 🙂

Hope this article helps you.

For any queries, please feel free to add a comment in the comments section.

author
. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Start a Project


    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home