前言 在iOS8中,苹果推出了WKWebView。WKWebView有一个突出特点,就是内存占用少。 但作为一个全新的WebView,API相比于之前的UIWebView肯定会有所不同。...WKWebView的设置 WKWebView的主要设置项都在configuration成员中(比如是否允许浏览器手指缩放,h5的浏览器能否自动播放等)这些都属于浏览器本身的设置项。...[self.webview.configuration allowsPictureInPictureMediaPlayback]; // 网页中的多媒体是否需要手势才能开始播放(iOS 10)...WKNavigationDelegate 如命名,这个是WKWebView的导航的代理。它控制了WKWebView在加载一个页面流程中的各个关键时间节点的。...,js会尝试加载某个URL,客户端在加载前拦截这个URL,通过解析这个URL识别它的内容,调用相应的原生方法,并阻上浏览器加载这个URL。
如果设置为YES,用户必须明确的点击页面上的元素或者相关联的输入页面来显示键盘;如果设置为NO,一个元素的焦点事件导致输入视图的显示和自动关联这个元素。...问题 然而,WKWebView是没有这个属性的,但又想做到以上效果,怎么办呢?...allowDisplayingKeyboardWithoutUserAction { Class class = NSClassFromString(@"WKContentView"); NSOperatingSystemVersion iOS...NSOperatingSystemVersion){11, 3, 0}; if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion: iOS...-> Void extension WKWebView{ var keyboardDisplayRequiresUserAction: Bool?
问题 在iOS 11以下系统,WKWebView出现 An instance of class WKWebView was deallocated while key value observers were...以上崩溃问题,经发现是没有removeObserver或者delegate没有设置为nil产生 解决方法 在dealloc中: - (void)dealloc{ //防止iOS11以下奔溃
因为我没有在 iOS 上找到任何一款稍微能用的输入法,因此只能拜托太子帮我开发一款应用了。太子很给力,帮我开发完成了,但现在的问题就是我如何在我的手机上部署。...这一步的难度最大的地方在于了解自己的开发者团队名或组织名是什么 在 Walterlv.CloudKeyboard 项目上包含了两个项目,一个是 iOS 键盘应用,另一个是键盘扩展。...编辑捆绑包标识符,内容就是在原先的 Walterlv.CloudKeyboard.iOS 项目的捆绑包标识符基础上的后面加上 .Keyboard 如下图 ?...上面这一步详细请看 Xamarin iOS 切换开发者账号之后的签名标识和预配配置文件更新方法 也就是说在发现这一步没有任何可以选择的时候,问题的原因就是没有在 XCode 的签名里面进行生成,需要确定在...删除掉一开始部署的占坑应用 ? 重新回到 VisualStudio 点击构建部署,此时在手机上可以看到 Xamarin 的图标和部署上的应用 ?
https://blog.csdn.net/u010105969/article/details/53942862 最近开发新功能,其中有加载网页的需求,而最近又了解到了WKWebView,说是耗内存小...因为需要与网页进行交互,而之前使用UIWebView发现与网页的交互并不是很好,于是这次决定使用WKWebView。...在体会着使用新控件且更好的控件的喜悦的时候,一个新的问题出现了--加载网页,后台无法及时获取cookie。后台无法及时获取cookie,在加载网页的时候就无法加载到正确的数据。...(需要多加载几次网页,才能加载到正确的数据) 在查阅相关资料后,发现在使用WKWebView的时候需要我们手动添加cookie到网页中。...在使用WKWebView的时候手动添加cookie: NSMutableDictionary *cookieDic = [NSMutableDictionary dictionary]; NSMutableString
CoreML为iOS带来了机器学习 - 应用程序可以利用训练有素的机器学习模型来执行从问题解决到图像识别的各种任务。...该介绍包括以下内容: CoreML入门 将CoreML与Vision框架结合使用 CoreML入门 这些步骤描述了如何将CoreML添加到iOS项目中。...特征提供程序类的行为类似于字符串和字典MLFeatureValue,其中每个特征值可以是简单的字符串或数字,数组或数据,或包含图像的像素缓冲区。...单值功能提供程序的代码如下所示: C#复制 使用这样的类,可以以CoreML理解的方式提供输入参数。功能的名称(例如myParam代码示例中)必须与模型所期望的相匹配。...原文: https://docs.microsoft.com/en-us/xamarin/ios/platform/introduction-to-ios11/coreml#coreml
iOS 9.0以上直接设置WKNavigationDelegate代理 func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge...completionHandler(.useCredential, cred) } 引用一下 self.wk.navigationDelegate = self 搞定,成功加载证书错误的站点
前言 由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebView的WKScriptMessageHandler实现iOS与JS交互 WKWebView是Apple在iOS8推出的Webkit...但只有在整个webView加载完成之后调用此方法才会有响应 2.1 执行JS iOS使用WKWebView的-evaluateJavaScript:completionHandler:方法执行拼接好的JS...端使用 WKWebView 进行渲染的,WKWebView 在内部采用的是分层的方式进行渲染,它会将 WebKit 内核生成的 Compositing Layer(合成层)渲染成 iOS 上的一个 WKCompositingView...WKWebView 这么做是为了可以让 iOS 上的 WebView 滚动有更流畅的体验。...此时,修改这个 DOM 节点的样式属性同样也会应用到原生组件上。因此,「同层渲染」的原生组件与普通的内置组件表现并无二致。
在项目中,用GCD的时候非常多,但是我最近脑子里一直在问自己一个问题,死锁是什么。惭愧的是这个当初清晰的概念现在愈加模糊,考虑到自己并没有专门整理过死锁的文章,所以写一篇技术文章来帮助自己梳理概念。...GCD提供了功能强大的任务和队列控制功能,相比于NSOperationQueue更加底层,因此如果不注意也会导致死锁。 所谓死锁,通常指有两个线程A和B都卡住了,并等待对方完成某些操作。...死锁的具体案例 接下来所有的案例代码,我都会用Swift3的语言重写一遍,为了帮助自己加深对Swift3的语言的理解。...但是任务3所在的同步线程会阻塞,所以任务4必须等任务3执行完以后再执行。这就又陷入了无限的等待中,造成死锁。...总结 在总结完这些GCD死锁的情况的以后,我觉得脑子里关于GCD中死锁的概念也逐渐清晰了。以后在项目中也会运用的时候也会更加注意。
/u010105969/article/details/53189934),可当时用来展示网页的控件是UIWebView,而在iOS8之后苹果推出了WKWebView,此控件也能用来显示网页,可与JS的交互却与...JS代码: (贴下判断iOS还是安卓的代码: varu = navigator.userAgent; varisAndroid = u.indexOf('Android') > -1 || u.indexOf...+Mac OS X/); //ios终端 alert('是否是Android:'+isAndroid); alert('是否是iOS:'+isiOS); if(isAcdroid){ }else...在点击前三个按钮的时候会调用方法: // 警告框 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString...注意:在利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码中的方法名,而我们在使用WKWebView的时候就不用了。
但是作为开发者,我在使用 Xamarin 部署我的云输入法,在第一步创建的时候需要我使用 XCode 新建一个项目,而新建的项目默认都是需要使用更新版本的系统,此时部署将会失败。...本文告诉大家一个简单的方法解决这个问题 如我师傅在 使用 Xamarin 在 iOS 真机上部署应用进行调试 博客上讲的,苹果为了提升开发者门槛,限制了 VS 创建应用的权限。...苹果:这不是我说的,你不要瞎说 在使用 VS 部署应用之前,需要先在 XCode 中新建一个空白 iOS 项目,细节还请看 使用 Xamarin 在 iOS 真机上部署应用进行调试 而新建的项目在 2020.10...但我的手机是 13.1.2 版本,我不想升级系统,强行选择手机然后部署将会提示下面代码 lindexi’s iOS 13.1.2 doesn’t match cloudkeyboard.app’s iOS...一个简单的解决方法就是使用文本编辑工具将 iOS 项目代码里面所有的 14.0 替换为 13.1 就可以了 如果替换之后,发现跑不过,如提示 @main 是新版本才创建的功能,那一定是你的项目创建的模版选错了
网页中加载的是一张图片,在后台将加载的图片换掉的时候再在App中加载此网页,发现展示的图片还是之前的图片,并没有更新,而且多次重新加载网页显示的还是之前的图片,说明缓存很严重。...于是查阅资料进行缓存的清除。...先说说UIWebView中缓存的清除,代码只有一句: [[NSURLCachesharedURLCache]removeAllCachedResponses]; 再说WKWebView中缓存的清除...注意:只有在iOS9之后WKWebView才有清除缓存的方法,在写代码的时候切记对系统版本进行判断。 ...增加内容: 在iOS8上还会导致崩溃的代码: /* 导致iOS8奔溃的代码 */ self.webView.allowsBackForwardNavigationGestures
分别使用 UIWebView 以及 WKWebView 实现效果如下: JavaScriptCore 类库里面有12个类(还有两个是负责导入相关类的头文件以及一个关于WebKit的宏定义);在基本的交互过程中...JSValue 可以理解成 一种供iOS数据结构与JS数据结构相互转换的包装,也可以看成一种桥接关系,我们执行JS获取的结果就是通过JSValue对象进行包装传给客户端进行处理的,类型转换官方文档描述如下...,WKWebView是获取不JSContext的,那咋办?...没关系,WKWebView提供给了我们非常便利的交互,不详细说了!...这样子,基于JavaScriptCore的UIWebView以及WKWebView交互就算圆满完成啦!
本文收集整理使用 Xamarin 开发 iOS 应用时可能会遇到的各种问题。...---- 需要注册 Apple Developer Portal 不管你用什么开发 iOS 应用,成为一个 Apple 的开发者是必要的。...虽然简单,但是如果没有成为开发者,那么你在所有工具上都无法成功部署应用。...在 XCode 中部署这个临时的项目; 你必须确保真的成功部署到真机上了。 换回 Visual Studio,理论上你现在就可以成功部署了。...- Stack Overflow 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/tips-for-developing-xamarin-ios-app.html
有3D-touch机型的坑昨天在上线的时候遇到了一个坑,最后导致的结果是找了好几个小时,直接到半夜才能上线。...入正题: 坑是:项目运行在456上没什么问题,但是在6S以上的机型就有点击事件不响应的情况出现,我的是直接登录界面就点击按钮都没有反应,有的时候轻点就有可能有响应,但是响应很慢。...首先自己从点击事件的不响应开始去排查,发现响应事件也开着,也不是触摸范围的问题,再者是怀疑是不是VC的层级结构的问题,开始尝试各种跳转,还是在6S上没有反应,甚至新建了一个类控制器来跳转测试,上面就丢了一个按钮...后来在百度中无意看到一个说法:项目中对UIButton有分类的,有可能会对3D-Touch的机型有影响的,我的天啊,然后检查项目,把关于UIButton的扩展去掉后,项目正常了。...或许是因为我的那个UIButton的分类里加了touch方法才导致这个结果,而没有写touch方法的UIButton的分类应该是没有影响的。
iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式。...document.body.appendChild(iFrame); // 发起请求后这个 iFrame 就没用了,所以把它从 dom 上移除掉...这就造成了死锁。 官方推荐使用WKWebView的evaluateJavaScript:completionHandler:代替这个方法。...iOS下JS与OC互相调用(一)--UIWebView 拦截URL iOS下JS与OC互相调用(二)--WKWebView 拦截URL iOS下JS与OC互相调用(三)--MessageHandler...(六)--WKWebView + WebViewJavascriptBridge iOS下JS与OC互相调用(七)--Cordova 基础 iOS下JS与OC互相调用(八)--Cordova详解+实战
2、移除/升级含UIWebView的第三方SDK(例:AFNetworking) 3、使用WKWebView替代UIWebView 4、WKWebView与JS交互案例(点击页面图片,调用iOS方法进行图片放大显示...比UIWebView更安全 基于NSURLProtocol实现iOS应用底层所有网络请求拦截(含网页ajax请求拦截【不支持WKWebView】NSURLProtocol 只能拦截 UIURLConnection...、NSURLSession 和 UIWebView 中的请求; 对于 WKWebView 中发出的网络请求也无能为力,如果真的要拦截来自 WKWebView 中的请求,还是需要实现 WKWebView...以下使用了NJKWebViewProgress作为进度条, 因此对于上架审核没有影响。...UIWebview to WKWebView #4441 #4.x iOS 9 macOS 10.10 watchOS 2.0 tvOS 9.0 Xcode 11+ is required
随着摒弃了对iOS老系统的支持,项目也开始逐步开始转向WKWebView,本想着新系统应该能填一些WKWebView的坑,结果发现还是还是坑不断,这次在iOS12又遇到一个神坑。...在iOS 10/11上面,这段代码执行都好好的,并且也没什么问题。结果现在在iOS 12beta版本里面突然不生效了,自己追加的userAgent没有添加成功。...为了验证下,我在WKWebView的delegate方法webView: didFinishNavigation:里打印customUserAgent和通过js方法获取的userAgent,结果发现两者真的是不一样的...iOS 12是不生效的,猜测原因应该是一旦实例化一个WKWebView并且调用了evaluateJavaScript: 更新其userAgent不生效。...但是一旦我们刷新下当前web页面,即调用webview的reload方法,这个customUserAgent就生效了。所以这应该是苹果iOS12系统的一个bug。
使用vs2019学习xamarin时,创建新程序。...使用模拟器真机等测试都报错如下图错误:调整AndroidManifest.xml和设备调试属性,打开Android SDK和工具安装可能需要的SDK都毫无作用最后解决办法是:必须整个解决方案的目录全部为英文文件夹才可以查了好久耽误了不少时间,特此记录一下希望可以帮到也遇到此错误的同学。...以上就是使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件的介绍,做此记录,如有帮助,欢迎点赞关注收藏!
Xamarin Xamarin 可以使用 C# 来开发 Android 及 iOS 应用,它是从 Mono 发展而来的,目前看起来商业运作得不错,相关工具及文档都挺健全。...前面提到微软提供了将 Objective-C 编译在 Windows Phone 上运行的工具,在对 Android 的支持上我没找到的详细资料,所以就暂时认为它是虚拟机的方式,从 Astoria 项目的介绍上看它做得非常完善...,所以无法使用 JIT 来优化性能,如果 iOS 开放,或许哪天有人开发一个像微软那样能直接在 iOS 上运行 Android 应用的虚拟机,就不需要跨平台开发了,大家只需要学 Android 开发就够了...API,也避免了不同操作系统版本下 JS 引擎不一致带来的问题,但后果是生成文件的体积变大和在 iOS 下性能不如 WKWebView。...WKWebView 是基于多进程实现的,它在 iOS 的白名单中,所以能支持 JIT。它的使用体验很不错,做到了一键编译运行,而且还有 MVVM 的支持,能进行数据双向绑定。
领取专属 10元无门槛券
手把手带您无忧上云