首页 > 其他分享 >iOS开发-WKWebView的介绍与基本使用

iOS开发-WKWebView的介绍与基本使用

时间:2024-07-08 11:21:56浏览次数:20  
标签:网页 void iOS 介绍 webView message WKWebView 加载

WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iOS 8 中引入的,作为 UIWebView 的替代品。WKWebView 提供了更高的性能和更多的功能,它是基于 WebKit 引擎的,这也是 Safari 浏览器所使用的引擎。

主要特性

  • 性能提升:相比于老旧的 UIWebViewWKWebView 在性能上有显著提升,包括更快的JavaScript执行和更流畅的页面渲染。
  • 独立的进程WKWebView 在独立的进程中运行,这意味着即使网页内容崩溃,也不会影响到应用程序的其他部分。
  • 现代化的API:提供了一套现代化的API,允许开发者与网页内容进行更深层次的交互。
  • 安全性:默认禁用了跨站点跟踪,并支持内容安全策略(CSP)。

使用 WKWebView

要在应用中使用 WKWebView,首先需要导入 WebKit 框架:

#import <WebKit/WebKit.h>

然后,可以创建一个 WKWebView 实例并添加到视图中:

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration];
[self.view addSubview:webView];

加载网页非常简单,可以使用一个 NSURLRequest 来加载一个网页:

NSURL *url = [NSURL URLWithString:@"https://www.example.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];

与网页内容交互

WKWebView 提供了 WKScriptMessageHandler 协议,允许原生代码与网页中的JavaScript相互通信。可以注入JavaScript代码并捕获其执行结果,或者让网页调用原生代码。

// 添加一个名为 "appModel" 的脚本消息处理器
[webView.configuration.userContentController addScriptMessageHandler:self name:@"appModel"];

// 实现 WKScriptMessageHandler 协议的方法
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"appModel"]) {
        // 处理从网页接收到的消息
        NSLog(@"JavaScript is sending a message: %@", message.body);
    }
}

导航代理和 UI 代理

WKWebView 提供了两个代理协议:WKNavigationDelegateWKUIDelegate。这些代理协议允许追踪网页加载的进度、处理网页加载过程中的各种事件、以及自定义网页中的某些UI元素,如弹出框。

webView.navigationDelegate = self;
webView.UIDelegate = self;

// 实现 WKNavigationDelegate 协议的方法来追踪加载进度
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    NSLog(@"网页加载完成");
}

// 实现 WKUIDelegate 协议的方法来自定义UI元素
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler {
    // 显示一个自定义的弹出框
    completionHandler();
}

标签:网页,void,iOS,介绍,webView,message,WKWebView,加载
From: https://www.cnblogs.com/zjq1999/p/18289535

相关文章

  • <mvc:default-servlet-handler/>使用介绍
    Tomcat,Jetty等)默认的Servlet,以便能够处理静态资源请求,如HTML文件、图片、CSS文件、JavaScript文件等。在SpringMVC的上下文中,静态资源默认会被当作请求映射处理,这可能会导致静态资源无法正确加载。使用mvc:default-servlet-handler/可以解决这个问题。使用介绍添......
  • <mvc:annotation-driven/>使用介绍
    mvc:annotation-driven/是SpringMVC中的一个配置元素,它用于简化和加速SpringMVC应用的配置,尤其是那些使用注解的控制器。当你在SpringMVC配置文件中添加了mvc:annotation-driven/元素时,Spring会自动注册一系列的消息转换器(messageconverters)、数据绑定器(databinder......
  • 介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
    Docker是一种开源的容器化平台,用于构建、部署和管理应用程序。它采用了轻量级的虚拟化技术,允许将应用程序及其依赖包装在一个独立的容器中,以便于在不同的环境中运行。Docker的主要优势包括:1.轻量级和快速启动:Docker容器与传统虚拟化相比更轻量级,可以在几秒钟内启动和停止。......
  • iOS开发-手势
    UIGestureRecognizer用于检测和处理手势的抽象基类。提供了检测用户手势的基本功能,如点按、滑动、捏合、旋转等。通过使用UIGestureRecognizer子类,可以为视图添加手势识别功能,增强用户交互体验。常见的UIGestureRecognizer子类一些常见的手势识别器子类:UITapGestureRecog......
  • 01、基础介绍
    Kubernetes介绍和各组件盘点01、K8S总览Kubernetes(K8s),用于自动部署、扩容、缩容和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes源自Google15年生产环境的运维经验,同时凝聚了社区最佳创意和实践。简单讲,K8s就是一......
  • Eureka介绍与使用
            Eureka是Netflix开发的一个开源服务注册与发现组件,它是SpringCloud体系中的核心组件之一,主要用于微服务架构中的服务治理。Eureka包含两个主要的组件:EurekaServer和EurekaClient。EurekaServer角色:充当服务注册中心,提供服务注册和发现的功能。......
  • 硬件开发笔记(二十三):贴片电阻的类别、封装介绍,AD21导入贴片电阻原理图封装库3D模型
    前言  电阻,电容,电感还有各种基础的电子元器件、连接器和IC构成了各种实现功能的电子电路。  本篇介绍贴片电阻,并将贴片电阻封装导入AD21,预览其三维模型。 贴片电阻    贴片电阻(SMDResistor)作为一种不可或缺的电子元件,广泛应用于各种电路和设备中。其体积......
  • tcp 中的poll机制介绍
    加入poll或者select机制可以使程序更加健壮和高效,特别是在需要处理多个连接时。虽然上面的示例是基于单线程的accept和read,它只能处理一个连接,直到它结束才能处理下一个连接。这种方法在简单应用中可能足够,但在实际生产环境中,通常会遇到需要同时处理多个连接的情况。......
  • 【C语言】常用库介绍
    在上一篇博文中,我们讲了C语言的知识点,感兴趣的小伙伴可以自行阅读:一文学完C语言【完整版】在本篇博文中,我们将会介绍C语言一些常用的库和系统函数。stdio.hstdio.h是C语言的标准I/O库,用于读取和写入文件,也用于控制台的输入和输出。标准I/O函数以下函数用于控制台......
  • ComfyUI预处理器ControlNet简单介绍与使用(附件工作流)
    简介ControlNet是一个很强的插件,提供了很多种图片的控制方式,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提高AI绘画的质量特别有用。接下来就演示几种热门常用的控制方式1.OpenPose(姿态控制预处理器)姿态控制预处理器可以根据提供的图......