首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用loadHTMLString()实现WKWebView历史记录的滑动手势

使用loadHTMLString()方法可以加载一个HTML字符串到WKWebView中。但是WKWebView并不会自动记录历史记录,因此无法通过滑动手势来实现历史记录的导航。

要实现WKWebView的历史记录的滑动手势,可以借助WKWebView的goBack()和goForward()方法来手动管理历史记录。具体步骤如下:

  1. 创建一个WKWebView实例,并将其添加到视图层级中。
代码语言:txt
复制
let webView = WKWebView(frame: view.bounds)
view.addSubview(webView)
  1. 加载HTML字符串到WKWebView中。
代码语言:txt
复制
let htmlString = "<html><body><h1>Hello, World!</h1></body></html>"
webView.loadHTMLString(htmlString, baseURL: nil)
  1. 创建两个按钮,一个用于返回上一页,一个用于前进到下一页。
代码语言:txt
复制
let backButton = UIButton(frame: CGRect(x: 20, y: 20, width: 100, height: 40))
backButton.setTitle("Back", for: .normal)
backButton.addTarget(self, action: #selector(goBack), for: .touchUpInside)
view.addSubview(backButton)

let forwardButton = UIButton(frame: CGRect(x: 140, y: 20, width: 100, height: 40))
forwardButton.setTitle("Forward", for: .normal)
forwardButton.addTarget(self, action: #selector(goForward), for: .touchUpInside)
view.addSubview(forwardButton)
  1. 实现goBack()和goForward()方法,分别调用WKWebView的goBack()和goForward()方法。
代码语言:txt
复制
@objc func goBack() {
    if webView.canGoBack {
        webView.goBack()
    }
}

@objc func goForward() {
    if webView.canGoForward {
        webView.goForward()
    }
}

通过以上步骤,我们可以在WKWebView中加载HTML字符串,并通过手动管理历史记录的方式实现滑动手势来导航历史记录。

注意:以上代码仅为示例,实际使用中需要根据具体需求进行适当的修改和调整。

推荐的腾讯云相关产品:腾讯云移动浏览器(Tencent Mobile Browser),产品介绍链接地址:https://cloud.tencent.com/product/tmb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

分享超详细 WKWebView 开发和使用经验

WKWebView 几个不常用特性 WKWebview 加载过程中性能指标图解 WKWebview 秒开实践及踩坑之路 今天分享这篇文章全面的介绍了 WKWebView,作者根据开发和使用经验从属性...WKUIDelegate WKWebView 网页UI交互代理,对于 JS 中 UI 类型操作需要实现对应方法,例如 window.alert、window.confirm 等操作。...属性和方法 历史记录管理 WKWebView 系统默认支持对网页历史记录管理,经过实际测试 302 状态码网页请求不属于历史记录,200 状态码网页请求属于正常历史记录。...通过 [WKWebView loadData:] 和 [WKWebView loadHTMLString:] 方法仅能加载当前HTML内容,无法加载资源文件,这种加载模式下,由于不需要访问其他路径下资源...允许 H5 中 Video 标签支持画中画模式,默认 YES 可以使用 H5 中 JS 代码实现画中画,video.requestPictureInPicture(),iPhone 不支持,iPad

4.7K30

Android开发之实现手势滑动功能

Android开发之实现手势滑动功能 首先得Activity必须实现OnGestureListener接口,该接口提供了关于手势操作一些方法, onDown方法:onDown是,一旦触摸屏按下,就马上产生...onDown事件 public boolean onDown(MotionEvent e) { return false; } onFling方法:当手在屏幕上滑动但手未离开屏幕时触发 MotionEvent...e1 手开始触碰屏幕位置MotionEvent对象 MotionEvent e2 手结束触碰屏幕位置MotionEvent对象 float velocityX 表示手在水平方向移动速度 float...velocityY) onLongPress方法:长按屏幕时触发 public void onLongPress(MotionEvent e) onScroll方法:当手在屏幕上滑动离开屏幕时触发...distanceY) onShowPress方法:点击了触摸屏,但是没有移动和弹起动作onShowPress和onDown区别在于 onDown是,一旦触摸屏按下,就马上产生onDown事件,但是

87021

WKWebView

你还可以使用 setMagnification:centeredAtPoint: 以编程方式设置Web内容第一次在Web视图中显示缩放比例。 此后,用户可以使用手势来改变比例。...按指定因子缩放页面内容,并将结果居中在指定点上。 导航 allowsBackForwardNavigationGestures。布尔值,指示水平滑动手势是否会触发后退列表导航,默认为NO。...:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler { //这里展示了如何使用OC原生来展示JS警告弹窗..., 6,上面讲到,我们可以使用KVO来监听WKWebViewestimatedProgress属性值变化来实现加载进度条,那么WKWebView中还有那些属性值变化也是可以被KVO监听到呢?...7,本文主要介绍了如何通过WKWebView来展示一个页面,其实,WKWebView不仅仅只有展示功能,它还能够和Native进行交互。而且iOS中web应用,起重点就是与Native进行交互。

6K20

IOS WebView控件详解

概述 WebView就是一个内嵌浏览器控件,在iOS中主要有两种WebView:UIWebView和WKWebView,UIWebView是iOS2之后开始使用WKWebView是在iOS8开始使用,...高达60fps滚动刷新率和丰富内置手势 WKWebView具有Safari相同JavaScript引擎 WKWebView增加了加载进度属性 UIWebView UIWebView继承与UIView...字符串 baseURL用来确定htmlString基准地址,相当于HTML标签作用,定义页面中所有链接默认地址 */ - (void)loadHTMLString:(NSString...// 实现自动定位JS代码, htmlLocationID为定位位置(由JS开发人员给出),实现自动定位代码,应该在网页加载完成之后再调用 NSString *javascriptStr = [NSString...使用上和UIWebView用法大体一致,主要是新增和优化了一些方法。 例如,使用WKWebView加载百度首页。

4.7K80

iOS小技能:右滑返回

引言 原理:利用系统返回手势interactivePopGestureRecognizer进行实现 使用场景:返回按钮有点小,不好触发返回时,可借助右滑返回来提升用户体验 I 添加右滑返回手势 1.1...if (gestureRecognizer == self.interactivePopGestureRecognizer) { //屏蔽调用rootViewController滑动返回手势...先来看看QMUI如何实现实现右滑返回?...2.1 问题分析 QMUI使用分类UINavigationController (QMUI) 方式进行控制右滑返回,具体核心代码如下 重写viewDidLoad设置右滑返回手势代理为自身...方法将手势返回强制加回来 2.3 动态添加方法 使用场景: 在消息发送和消息转发时会用到动态添加方法 全局控制返回手势 下面的+addMethod方法有三个参数,第一个参数是要添加方法类,第二个参数是方法

2.2K30

UI篇- UIWebView使用大全

支持内建手势, 据说高达60fps刷新频率(不卡) WKWebView创建 导入Webkit这个类库(WKWebVeiw包含在里面的) 遵守协议(一般前两个就行啦,第三个主要是与JS相关东西...,这个协议中包含一个必须实现方法,这个方法是提高App与web端交互关键,它可以直接将接收到JS脚本转为OC或Swift对象--网上大神说,我没用过。)...使用loadHTMLString,loadData都不可以. 7....OC中获取到JS传递过来参数 如果要实现这样JS和OC数据交互,需要使用到一个第三方文件:WebViewJavascriptBridge 给web发消息 @property WebViewJavascriptBridge...如何消除Web中 Alert弹框中出现网址 ? 这里解决方法是通过使用 WKWebView 方法。

1.9K10

iOS小技能:WKWebView与JS交互

前言 由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebViewWKScriptMessageHandler实现iOS与JS交互 WKWebView是Apple在iOS8推出Webkit...-evaluateJavaScript:completionHandler:方法来实现 WKWebView-evaluateJavaScript:completionHandler:方法可以执行JS...但只有在整个webView加载完成之后调用此方法才会有响应 2.1 执行JS iOS使用WKWebView-evaluateJavaScript:completionHandler:方法执行拼接好JS...大图浏览器 ImageZoomScale:iOS 利用UIScrollView实现 图片放大预览,并支持缩小 iOS查看大图浏览器(应用场景:查看风险商户证明材料时图片支持滑动切换) [video(...「同层渲染」原理 微信小程序在 iOS 端使用 WKWebView 进行渲染WKWebView 在内部采用是分层方式进行渲染,它会将 WebKit 内核生成 Compositing Layer

6.2K30

WKWebView详解

您可以使用WKWebView类来在应用程序中嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...使用 initWithFrame:configuration: 方法来创建WKWebView对象; 使用 loadHTMLString:baseURL: 方法来加载本地HTML文件; 使用 loadRequest...(magnification属性)缩放页面内容,并将结果集中在指定点上,即以指定点为中心放大 --- 浏览 是否允许水平滑动手势来触发网页前进和后退 @property(nonatomic) BOOL...调用 如果要使用默认预览操作,应用程序必须在返回视图控制器previewActionItems实现中运行这些操作 iOS 10.0+预览时用户触发pop操作(继续按压)时调用 - (void)webView...系统将标题作为一个快速选择表单中选项,当用户在上面滑动时可以看到。

20.4K193

在线教育平台开发中,作业功能中图片上传是如何实现

目前,很多在线教育平台中,为了验证课堂教学效果或学员学习情况,一般都内置了作业系统。学员在上传作业过程中,有可能会上传多张图片并按序(自下而上)排列,那么这个功能是如何实现呢?...下面小编就以iOS版本在线教育平台开发为例,来说明下,如何使用WKWebView实现图片排列。 一、先创建一个wkwebview - (WKWebView *)wkWebV{     if (!..._wkWebV) {         _wkWebV = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, _window_width, _window_height...important;}   “; //把CSS和img标签拼接     htmlStr = [htmlStyle stringByAppendingString:htmlStr]; //使用...WKWebview加载HTMLSting     [_wkWebV loadHTMLString:htmlStr baseURL:nil]; } 以上就是在线教育平台开发中,如何使用WKWebView实现作业功能中图片排列效果

71120

WKWebView使用

WKWebView使用 前言 最近项目中UIWebView被替换为了WKWebView,因此来总结一下WKWebView使用。...示例Demo:WKWebView使用 本文将从以下几方面介绍WKWebView: 1、WKWebView涉及一些类 2、WKWebView涉及代理方法 3、网页内容加载进度条实现 4、JS...和OC交互 5、本地HTML文件实现 一、WKWebView涉及一些类 WKWebView:网页渲染与展示 注意: #import //初始化...方法,设置处理接收JS方法代理,代理遵守WKScriptMessageHandler,实现捕捉到JS消息回调方法,详情可以看第一步中对这两个类介绍。...文本编辑偏好设置.png 详情请前往我Github:WKWebView使用 如果我WKWebView使用总结没帮到你,你也可以看看下面几篇文: https://www.jianshu.com/p

2.8K61

一个Flutter WebView侧滑bug解决方案

问题定位 2.1 猜测WebView内部手势和外部手势冲突 首先猜测是不是内部滑动手势跟外部冲突,因此找到了iOS WKWebView管理内部侧滑API。...// 猜测原因是iOS中侧滑是是一个同步手势,并没有时机去执行异步callback,具体需要看下源码,待补充 Future _exit() async { //iOS咋不进去...解决方案 3.1 WillPopScope与手势怎么共存 在使用WillPopScope时使用手势方法比较容易得出 onWillPop: Platform.isIOS ?...null : popCallback, 到这里就可以实现iOS侧滑返回问题,但是带来新问题是这里手势WKWebView内部冲突,webview内部无法返回。...因此在iOS中实现了一下WKWebViewKVO,将一些信息canGoBack通过channel回调到Flutter。

3.1K50

理解iOS端WebView同层组件

在iOS中,我们使用WKWebView来创建Web视图,WKWebView在进行解析渲染时,会将Web组件渲染到WKCompositingView上,这个View是一个原生UIView子类,通常WKWebView...; } @end 使用Xcode调试工具进行查看,层级如下图所示: 可以看到对于蓝色色块,WKWebView单独创建了一个WKChildScrollView来承载。...要处理交互问题也非常简单,首先需要先关闭WebView拦截,在WebView加载完成后,使用如下代码来找到WKContentView,并将其手势拦截关闭: - (void)handleGestrues...,渲染到WebView中,即可实现原生组件事件交互。...本文中也实现了一个简单Demo来演示同层组件,Demo非常捡漏,希望起到抛砖引玉,帮助你打开创新思路。下面是一些建议,有兴趣你可以尝试下在iOS端实现一套完整同层组件渲染框架。

2.7K20

技术 | Hybrid载体变化(一)

至于你想到的如何加载网页,其实很简单,一个load而已。 self.wkWebView?....loadHTMLString(html, baseURL: URL(string: "https://github.com/icepy")) 说到JavaScript交互比较重要地方是需要实现“WKScriptMessageHandler...= WKWebView(frame: self.view.frame, configuration: config) 最终当你需要向Native发送消息时就需要使用这个属性并调用其postMessage...在此之前,我们应该先监控好一个应用打开完整状态,你需要实现WKNavigationDelegate协议,如下几个方法: func webView(_ webView: WKWebView, didStartProvisionalNavigation...,客户端这边从页面加载完成开始计时,选择一个你认为比较合理渲染时间,当Web报时大于它时,肯定渲染就不符合预期,这个时候,你还需要从另外角度去分析问题了,我建议是使用performance再加上DOM

85530

iOS加载本地HTML、pdf、doc、excel文件 & HTML字符串与富文本互转

1.1 原理 1.2 源码 1.3 核心代码 2.1 iOS12之前使用UIWebView 2.2 iOS12之后采用WKWebView 3.1 html转换为富文本 3.2 富文本转换为html 前言...iOS加载本地HTML、pdf、doc、excel文件,都可采用WebView进行实现即可 HTML字符串与富文本互转 应用场景:使用原生视图UILabel显示服务端返回带有HTML标签内容 原文...将它作为邮件附件,在手机端选择其他应用打开,将html文件存储到文件iCloud/本机 再根据文件名称打开即可 如果你有需求在手机端打开本地html需求,又觉得使用其他方法麻烦或者不管用时候,推荐你可以自己写个简单...1.1 原理 使用[_webView loadHTMLString:html baseURL:baseURL]; 进行代码加载 - (void)viewDidAppear:(BOOL)animated...NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; [_webview loadHTMLString

1.9K30
领券