WKWebViewConfiguration
初始化webView的属性集合, 用WKWebViewConfiguration这个类,你可以决定一会网页怎么渲染,视频播放如何处理,用户可以选择的项的粒度,和其他选择。WKWebViewConfiguration仅仅当网页第一次加载的时候使用,当网页被创建时,你不能用WKWebViewConfiguration去修改网页的配置
配置新Web视图的属性
- applicationNameForUserAgent 用户代理字符串中使用的应用程序的名称
- preference web视图要使用的首选项对象。
- processPool 获取视图的Web内容进程的进程池
- userContentController 要与web视图关联的用户内容控制器
+websiteDataStore web视图使用的网站数据存储。
确定网页可伸缩性
- ignoresViewportScaleLimits 一个布尔值,用于确定WKWebView对象是否应始终允许缩放网页。
设置渲染首选项
- suppressesIncrementalRendering 一个布尔值,指示web视图在完全加载到内存中之前是否抑制内容呈现。
Setting Media Playback Preferences
- allowsInlineMediaPlayback 一个布尔值,指示HTML5视频是内联播放还是使用本机全屏控制器。
- allowsAirPlayForMediaPlayback 指示是否允许AirPlay的布尔值
- allowsPictureInPictureMediaPlayback 一个布尔值,指示HTML5视频是否可以在图片中播放图片
- mediaTypesRequiringUserActionForPlayback API_AVAILABLE(macos(10.12), ios(10.0)) 确定哪些媒体类型需要用户手势才能开始播放。此处要注意属性使用时要加一个系统版本判断
- WKAudiovisualMediaTypes 需要用户手势才能开始播放的媒体类型
设置选择粒度
- selectionGranularity 用户可以在web视图中交互选择内容的粒度级别。
- WKSelectionGranularity 交互地创建和修改选择的粒度
选择用户界面方向性
- userInterfaceDirectionPolicy 用户界面元素的方向性
- WKUserInterfaceDirectionPolicy 用于确定web视图中用户界面元素的方向性的策略。
识别数据类型
- dataDetectorTypes 所需的数据检测类型。
- WKDataDetectorTypes 检测到的数据类型
为新URL Scheme添加处理程序
- -setURLSchemeHandler:forURLScheme: 为给定的URL Scheme添加URL Scheme处理程序对象
- -urlSchemeHandlerForURLScheme: 返回给定URL Scheme的当前注册的Scheme处理程序
实例属性 defaultWebpagePreferences
WKUserContentController
WKUserContentController对象为JavaScript提供了一种向web视图发送消息和插入用户脚本的方法。
添加消息处理程序
- -addScriptMessageHandler:name: 添加脚本消息处理程序
添加和删除用户脚本
- -addUserScript: 添加用户脚本
- -removeAllUserScripts 删除所有关联的用户脚本
- -removeScriptMessageHandlerForName:删除脚本消息处理程序。
- userScripts 与用户内容控制器关联的用户脚本
添加和删除内容规则
- -addContentRuleList: 添加内容规则列表
- -removeContentRuleList: 删除规则列表。
- -removeAllContentRuleLists 删除所有规则列表
- WKContentRuleList 要应用于web内容的规则的编译列表。
- WKContentRuleListStore
WKUserScript
WKUserScript对象表示可以注入网页的脚本
初始化脚本
- -initWithSource:injectionTime:forMainFrameOnly: 返回可添加到用户内容控制器的已初始化用户脚本
- source脚本的源代码
- injectionTime 脚本应注入网页的时间
- forMainFrameOnly一个布尔值,指示脚本应该只注入主帧(是)还是所有帧(否)
- WKUserScriptInjectionTime 将用户脚本插入网页的时间
navigationDelegate
启动导航
- -webView:didCommitNavigation: 当web视图开始接收web内容时调用
- -webView:didStartProvisionalNavigation: 在web视图中开始加载web内容时调用。
响应服务器操作
- -webView:didCommitNavigation: 当web视图开始接收web内容时调用
- -webView:didReceiveServerRedirectForProvisionalNavigation:当web视图收到服务器重定向时调用
身份验证挑战
- -webView:didReceiveAuthenticationChallenge:completionHandler:当web视图需要响应身份验证质询时调用。
对错误的反应
- -webView:didFailNavigation:withError:在导航过程中发生错误时调用。
- -webView:didFailProvisionalNavigation:withError: 当web视图加载内容时发生错误时调用。
跟踪加载进度
- -webView:didFinishNavigation:导航完成时调用
- -webViewWebContentProcessDidTerminate:当web视图的web内容进程被终止时调用
允许导航
- -webView:decidePolicyForNavigationAction:decisionHandler:决定是否允许或取消导航
- -webView:decidePolicyForNavigationResponse:decisionHandler: 决定在知道导航的响应后是否允许或取消导航。
导航策略
- WKNavigationActionPolicy 从webView:decidePolicyForNavigationAction:decision handler:方法传回决策处理程序的策略。
- WKNavigationResponsePolicy
从webView:decidePolicyForNavigationResponse:decision handler:方法传回决策处理程序的策略。
实例方法
- -webView:decidePolicyForNavigationAction:preferences:decisionHandler:
WKUIDelegate
WKUIDelegate类提供了表示网页的原生界面原素的方法,Web视图用户界面委托实现此协议以控制新窗口的打开,增强用户单击元素时显示的默认菜单项的行为,并执行其他与用户界面相关的任务。这些方法可以作为处理JavaScript或其他插件内容的结果调用。默认的web视图实现假设每个web视图有一个窗口,因此非常规用户界面可能实现一个用户界面委托。
创建Web视图
- webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures 创建新的web视图
显示用户界面面板
- webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler 显示JavaScript提示面板。
- webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler 显示一个JavaScript确认面板
- webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:显示JavaScript文本输入面板
关闭Web视图
- webViewDidClose:通知应用程序DOM窗口已成功关闭。
显示上传面板
- webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler: 显示文件上传面板
实例方法
-webView:contextMenuConfigurationForElement:completionHandler:
-webView:contextMenuDidEndForElement:
-webView:contextMenuForElement:willCommitWithAnimator:
-webView:contextMenuWillPresentForElement:
网友评论