WKWebView常见功能及如何返回上级界面

2024-08-28 22:08

本文主要是介绍WKWebView常见功能及如何返回上级界面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、WKWebView的简单初始化

- (WKWebView *)webView{if (_webView == nil) {_webView = [[WKWebView alloc] initWithFrame:self.sContentView.bounds];[_webView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];[_webView setNavigationDelegate:self];[_webView setUIDelegate:self];[_webView setMultipleTouchEnabled:YES];[_webView setAutoresizesSubviews:YES];[_webView.scrollView setAlwaysBounceVertical:YES];// 这行代码可以是侧滑返回webView的上一级,而不是根控制器(*只针对侧滑有效)[_webView setAllowsBackForwardNavigationGestures:true];}return _webView;
}

至于如何加载webView用法和UIWebViewle类似,自行百度,下面介绍r如何返回上一层,代码结合ReactiveCocoa,ReactiveCocoa的简单使用

@weakify(self)// 返回按钮[self.baseView.navView addSubview:self.backBtn];[[self.backBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {@strongify(self)if ([self.webView canGoBack]) {[self.webView goBack];} else {[self.viewModel.services popViewModelAnimated:YES];}}];

如果要做到类似于微信里面的返回上一级出现有好的提示,可以采用ReactiveCocoa非常牛逼的监听机制:

// 绑定关闭按钮RAC(self.baseView.popBtn, hidden) = [RACObserve(self.webView, canGoBack) map:^id(NSNumber *canGoBackNum) {@strongify(self)if (canGoBackNum.boolValue) {[self.backBtn setTitle:@"返回" forState:UIControlStateNormal];} else {[self.backBtn setTitle:@"" forState:UIControlStateNormal];}[self.backBtn sizeToFit];return @(!canGoBackNum.boolValue);}];

现在好多APP都会在导航栏下方添加进度条,提醒用户webView的加载进度,这在WKWebView中实现起来也非常简单,只需自定义UIProgressView即可:

// 监听进度[RACObserve(self.webView, estimatedProgress) subscribeNext:^(id x) {@strongify(self)[self.progressView setAlpha:1.0f];BOOL animated = self.webView.estimatedProgress > self.progressView.progress;[self.progressView setProgress:self.webView.estimatedProgress animated:animated];if(self.webView.estimatedProgress >= 1.0f) {[UIView animateWithDuration:0.3f delay:0.3f options:UIViewAnimationOptionCurveEaseOut animations:^{[self.progressView setAlpha:0.0f];} completion:^(BOOL finished) {[self.progressView setProgress:0.0f animated:NO];}];}}];

这篇关于WKWebView常见功能及如何返回上级界面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116013

相关文章

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

基于Java和FFmpeg实现视频压缩和剪辑功能

《基于Java和FFmpeg实现视频压缩和剪辑功能》在视频处理开发中,压缩和剪辑是常见的需求,本文将介绍如何使用Java结合FFmpeg实现视频压缩和剪辑功能,同时去除数据库操作,仅专注于视频处理,需... 目录引言1. 环境准备1.1 项目依赖1.2 安装 FFmpeg2. 视频压缩功能实现2.1 主要功

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Java实现TXT文件导入功能的详细步骤

《Java实现TXT文件导入功能的详细步骤》在实际开发中,很多应用场景需要将用户上传的TXT文件进行解析,并将文件中的数据导入到数据库或其他存储系统中,本文将演示如何用Java实现一个基本的TXT文件... 目录前言1. 项目需求分析2. 示例文件格式3. 实现步骤3.1. 准备数据库(假设使用 mysql

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook