前言 工作需要,特意准备一篇入门文章,为新人开发者介绍常见的数据存储。 正文 数据存储 数据存储本质就是运行时的对象保存在文件、数据库中。...系统提供的持久化存储数据的类,该方法是多线程安全的单例,在沙盒中的存储是用plist进行保存。...nonatomic) int16_t gender; @property (nullable, nonatomic, copy) NSString *name; @end CoreData的具体使用: //从本地加载对象模型...iOS给出的答案是keychain。 keychain是iOS提供给App存储敏感和安全相关数据用的工具。keychain同样会被iTunes备份,即使App重装仍能读取到上次保存的结果。...总结 iOS的本地数据存储,其实就是内存数据的序列化和反序列化。
页面禁用长按事件 方式一 禁用长按选择 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)...duration: TimeInterval) { myWebView.frame = self.webouterView.bounds } func webView(_ webView: WKWebView...self.showNoticeText(message, time: 1.2) { completionHandler() } } func webView(_ webView: WKWebView...completionHandler: @escaping (Bool) -> Void) { // JS端调用confirm函数时,会触发此方法 // 通过message可以拿到JS端所传的数据 // 在iOS...{ //页面开始加载,可在这里给用户loading提示 self.showNoticeWait(text: "加载中..."); } func webView(_ webView: WKWebView
前言 在iOS8中,苹果推出了WKWebView。WKWebView有一个突出特点,就是内存占用少。 但作为一个全新的WebView,API相比于之前的UIWebView肯定会有所不同。...这个值决定了用内嵌HTML5播放视频还是用本地的全屏控制。...[self.webview.configuration allowsPictureInPictureMediaPlayback]; // 网页中的多媒体是否需要手势才能开始播放(iOS 10)...WKNavigationDelegate 如命名,这个是WKWebView的导航的代理。它控制了WKWebView在加载一个页面流程中的各个关键时间节点的。...相当于WKWebView加载的生命周期方法。
如果我们加载一个Web页面时,想一开始唤起键盘,除了web端需要设置input 的focus状态外,我们还需要将keyboardDisplayRequiresUserAction设置为false 问题 然而,WKWebView...allowDisplayingKeyboardWithoutUserAction { Class class = NSClassFromString(@"WKContentView"); NSOperatingSystemVersion iOS...NSOperatingSystemVersion){11, 3, 0}; if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion: iOS...-> Void extension WKWebView{ var keyboardDisplayRequiresUserAction: Bool?...} 原文地址 https://stackoverflow.com/questions/32449870/programmatically-focus-on-a-form-in-a-webview-wkwebview
// 读取本地JSON文件 - (NSArray *)readLocalFileWithName:(NSDictionary *)name { // 获取文件路径 NSString...格式化并返回字典形式 return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; } // 写入本地...filePath atomically:YES]; if (a) { NSLog(@"路径:%@",filePath); }else { NSLog(@"存储失败
使用WKWebView加载百度页面占用内存(28M) 注意:可以说加载一个网页对内存是没有什么太大影响的,由此看出,单纯加载网页,WKWebView 比 UIWebView 内存强了太多 02-使用...WKWebView加载百度页面占用内存.png 3....基本用法 引入头文件 #import 在viewDidLoad中写好创建 WKWebView 和loadData的方法
WKWebView+UITableView混排 做内容展示页的时候,经常会用到WKWebView+UITableView的混排功能,现在此做一个总结,该功能的实现我采用了四种方法。...的使用、WKWebView+UITableView混排、UIScrollView实现原理、WKWebView离线缓存功能 等更多内容都在 https://github.com/wsl2ls/iOS_Tips...iOS_Tips集合简介: 1、暗黑模式 2、AppleID登录应用 3、AVFoundation 高仿微信相机拍摄和编辑 4、AVFoundation 人脸检测 5、AVFoundation...7、VideoToolBox和AudioToolBox音视频编解码 8、OpenGL ES学习 9、LeetCode算法练习 10、键盘和UIMenuController的并存问题 11、iOS...Crash防护 12、WKWebView相关
WeChat12f1694d964b0ab228b939d8c880ea82.png if (@available(iOS 11.0, *)) { _wkWebView.scrollView.contentInsetAdjustmentBehavior
的存储空间,一般是处理cookie,缓存等浏览器相关的临时存储 读取cookie代码 [config.websiteDataStore fetchDataRecordsOfTypes:[NSSet *records) {}]; 清理所有存储...+)/mediaPlaybackRequiresUserAction(iOS10-) 是否自动播放视频 if (@available(iOS 10.0, *)) { config.mediaTypesRequiringUserActionForPlayback...为了兼容iOS8的js通信,也可以在这里拦截url做bridge分发 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction...,解压后放在本地指定的沙盒目录,随后通过wkwebview加载本地方式打开页面。
问题 在iOS 11以下系统,WKWebView出现 An instance of class WKWebView was deallocated while key value observers were...以上崩溃问题,经发现是没有removeObserver或者delegate没有设置为nil产生 解决方法 在dealloc中: - (void)dealloc{ //防止iOS11以下奔溃
正文 基础使用 ---- 构建和配置 WKWebView是继承自UIView的,因此构建方式还是很老套的,通常 - (instancetype)initWithFrame:(CGRect)frame...基本代理相关 常用的有: //开始加载 -(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *...WKNavigation *)navigation withError:(NSError *)error{ NSLog(@"%@-------------------",error); //加载本地的一个空页面的操作...重点:JS交互 ---- WKWebView的交互方法和之前的UIWebView其实本质上没有什么太大的差别,都是通过发送方法名找到对应的方法执行对应的操作。...self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"mjxLogin"]; } 对监听的处理的代理 //用来接收js调用本地方法的拦截器
② UIWebView 和 WKWebView 的区别 WKWebView 更快(占用内存可能只有 UIWebView 的1/3~1/4),没有缓存,更为细致地拆分了 UIWebViewDelegate...③为什么现在是时候从 UIWebView 迁移到 WKWebView 了: 截止到我写这篇文章的时候,据 mixpanel 的数据,iOS 9 占有率已达 58.55%,iOS 8 占有率达到了 34.78%...,iOS 7 及更早版本是 6.66%,而那 6.66% 应该大部分都是对手机使用极度不频繁的人。...所以从现在开始,再开发 App 只兼容 iOS 8 和 iOS 9 两个版本就可以了(如果你的产品对覆盖率要求不是很苛刻的话)。...WKWebView 是 iOS 8 之后才有的 WebKit 中的内容,所以之前我们要同时兼容 iOS 7 和 iOS 8 的时候,可以推辞说 UIWebView 和 WKWebView 一起做太麻烦了
这个问题首先你要明白,WKWebView有自己的进程,使用自己的存储空间来存储cookie和cache,WKWebView会忽视NSURLCache、NSHTTPCookieStorage、NSCredentialStorage...让WKWebview支持NSURLProtocol可参考:NSURLProtocol对WKWebView的处理 所以这里应该很清楚,NSHTTPCookieStorage已经用不到了,但是你可以把他作为存储...cookie到本地的工具使用。...使用方法如下图: 第三种:通过WKHTTPCookieStore注入cookie,但是只针对iOS11之后 使用起来就比较方便了。...最后,推荐几种靠谱的传值方式: 这都是避免出现Android和iOS出现两种不同的传值方式,测试效果上看性能无优劣,只是一种传值方式而已!!!,且看使用起来是否顺手。
WKWebView 适用于iOS8之后的系统 引用 #import 1.OC调用JS NSString *jsmethod = [NSString stringWithFormat...:@"mymethd(\"%@\")",data]; //data(NSDate)为要传给js的数据 [self.wkWebView evaluateJavaScript:jsmethod...[webviewConfig.userContentController addScriptMessageHandler:self name:@"share"]; WKWebView...*webView = [[WKWebView alloc ] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height...window.webkit.messageHandlers.share.postMessage(message); (5)释放js交互,在页面推出的时候,调用 WKUserContentController *controller = self.wkWebView.configuration.userContentController
https://blog.csdn.net/u010105969/article/details/53942862 最近开发新功能,其中有加载网页的需求,而最近又了解到了WKWebView,说是耗内存小...因为需要与网页进行交互,而之前使用UIWebView发现与网页的交互并不是很好,于是这次决定使用WKWebView。...(需要多加载几次网页,才能加载到正确的数据) 在查阅相关资料后,发现在使用WKWebView的时候需要我们手动添加cookie到网页中。...在使用WKWebView的时候手动添加cookie: NSMutableDictionary *cookieDic = [NSMutableDictionary dictionary]; NSMutableString
atomically useAuxiliaryFile:Bool) ->Bool 然而 writeToFile 这个函数却只属于 NSArray 假如我自定义了一个Person类来写人,然后用数组来存储...想要把它存储在本地plist文件中,需要用到 NSKeyedArchiver 和 NSKeyedUnarchiver 但是在此之前,你需要把你的类改造一下。 ? 起初的类 ?...将peopleArray存储到本地plist ? 将peopleArray从本地plist中取出 附上我在 StackOverFlow 上的相关讨论
一、WKWebView的使用: 1、初始化 webView初始化:WKPreferences, WKUserContentController -> WKWebViewConfiguration ->... WKWebView 这里添加了三个代理,代理方法会在下面实现。...preferences.javaScriptEnabled = true preferences.javaScriptCanOpenWindowsAutomatically = true // default value is NO in iOS...-> Void) { print("需验证服务器证书: didReceive challenge") } // MARK: - web内容进程被终止时调用(iOS 9.0之后) func...与iOS交互 点击alert APP弹框 <button
NSUserDefaults简介 在Android和ios都提供了本地轻量级数据存储,底层实现都是基于key-value的方式。...Android里面的叫SharedPreferences,ios的叫NSUserDefaults,使用上也是非常的简单。我们先看一看NSUserDefaults的API。...比如说我们要存储 用户名(NSString):userName 密码(NSNumber):userPassword 用户信息(NSDictionary):userInfo 那么我们可以定义如下...@"info"]; [[NSUserDefaults standardUserDefaults] setBool:isOn forKey:@"isOn"]; //调用synchronize存储...initWithDictionary: [[NSUserDefaults standardUserDefaults]dictionaryRepresentation]]; NSUserDefaults只能存储一些简单的数据类型
iOS 9.0以上直接设置WKNavigationDelegate代理 func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge
## 背景Xcode 升级到 14.3后,模拟器是iOS 16.4 的,想通过Safari -> Developer -> Web Inspector查看,结果发现查看不了iOS16.4 之后,如果想要通过Web Inspector查看,需要设置如下代码: if #available(iOS 16.4, \*) { webView.isInspectable...## 参考Mark the webview as inspectable in iOS 16.4
领取专属 10元无门槛券
手把手带您无忧上云