iOS 关于UIWebView常见使用方法

2023-11-16

Step — UIWebView

1、UIWebView常用方法

//1、声明

@property(nonatomic,strong) UIWebView*webView;

//1、代理

UIWebViewDelegate

 /*2、ATS配置:

     *info.plist添加字段:App Transport Security Settings - 字典

     *Allow Arbitrary Loads - Boolean 设置为:YES

     */

 /*3、几种方法区别

    - (void)loadRequest:(NSURLRequest *)request;一般加载指定地址的网页,也可以加载本地文件(html、world、PDF、txt等)

    - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;//直接用来加载html代码

    - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;//加载data

    */

 /*4 加载本地文件

     1.加载网络地址

    NSString *urlStr = @"https://www.jianshu.com";

    NSURL *url = [NSURL URLWithString:urlStr];

    */

 /*2.加载本地 html

    NSString *path = [[NSBundle mainBundle] pathForResource:@"file_1" ofType:@"html"];

    NSURL* url = [NSURL  fileURLWithPath:path];

    */

 /*3.加载本地 world

     NSString *path = [[NSBundle mainBundle] pathForResource:@"world" ofType:@"docx"];

     NSURL *url = [NSURL fileURLWithPath:path];

     */

 /*4.加载本地 pdf

    NSString *path = [[NSBundle mainBundle] pathForResource:@"pdf" ofType:@"pdf"];

     NSURL *url = [NSURL fileURLWithPath:path];

     */

 /*4.加载本地 图片

     NSString *path = [[NSBundle mainBundle] pathForResource:@"photo" ofType:@"png"];

     NSURL *url = [NSURL fileURLWithPath:path];

     */

 //5.加载本地 txt

 NSString*path = [[NSBundlemainBundle] pathForResource:@"txt"ofType:@"txt"];

 NSURL*url = [NSURLfileURLWithPath:path];

 NSURLRequest*request = [NSURLRequestrequestWithURL:url];

 //6、创建

 self.webView= [[UIWebViewalloc] initWithFrame:self.view.bounds];

 self.webView.backgroundColor= [UIColorwhiteColor];

 self.webView.delegate= self;

    [self.webViewloadRequest:request];

    [self.viewaddSubview:self.webView];

 //7、属性设置

 //网页是否可以缩放

 self.webView.scalesPageToFit= YES;

 // 设置某些数据变为链接形式,这个枚举可以设置如电话号,地址,邮箱等转化为链接

 self.webView.dataDetectorTypes= UIDataDetectorTypeAll;

 //设置是否使用内嵌播放器播放视频

 self.webView.allowsInlineMediaPlayback= YES;

 //设置视频/音频是否自动播放

 self.webView.mediaPlaybackRequiresUserAction= YES;

 //设置音频播放是否支持 ari play 功能

 self.webView.mediaPlaybackAllowsAirPlay= YES;

 //设置是否将数据加载内存后渲染界面

 self.webView.suppressesIncrementalRendering= YES;

 //设置是否打开keyboard交互

 self.webView.keyboardDisplayRequiresUserAction= YES;

 //设置分页模式(网页大小超出self.view)

 self.webView.paginationMode= UIWebPaginationModeUnpaginated;

 //设置每页的长度

 self.webView.pageLength= self.view.frame.size.height;

 //设置每页的间距

 self.webView.gapBetweenPages= self.view.frame.size.width;

 /*8、常用方法

     - (void)reload;//刷新

     - (void)stopLoading;//暂停

     - (void)goBack;//返回

     - (void)goForward;//前进

     */

//9、代理

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{

 NSLog(@"是否加载 %s",__func__);

 returnYES;

}

- (void)webViewDidStartLoad:(UIWebView*)webView{

 NSLog(@"开始 %s",__func__);

}

- (void)webViewDidFinishLoad:(UIWebView*)webView{

 NSLog(@"完成 %s",__func__);

}

- (void)webView:(UIWebView*)webView didFailLoadWithError:(NSError*)error{

 NSLog(@"失败 %s",__func__);

}

2、特殊用法

1.打电话

 NSString*strTel =[[NSStringalloc] initWithFormat:@"tel:%@",@"182xxxx5502"];

 UIWebView*callWebview = [[UIWebViewalloc] init];

[callWebview loadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:strTel]]];

    [self.viewaddSubview:callWebview];

2.safari打开网页中的地址

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{

 NSLog(@"是否加载 %s",__func__);

 //在网页中打开safari

 if(navigationType == UIWebViewNavigationTypeLinkClicked) {

 //参数1;打开APP的URL

 //参数2:可选字典参数。传入一个空字典可以达到openURL:一样的行为。

 //参数3:执行成功后completionhandler在主队列中回调。

        [[UIApplicationsharedApplication] openURL:[request URL] options:@{}completionHandler:nil];

 returnNO;

    }

3.获取web内容

- (void)webViewDidFinishLoad:(UIWebView*)webView {

 /*

    NSString *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

     NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];//获取当前页面的title

     NSString *html = @"document.documentElement.innerHTML";//获取当前网页的html

     NSString *html2 = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('creditNum').innerText"];//获取id为creditNum标签的值

     NSString *html3 = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('zmScore').value"];//获取标签为id为zmScore的value

     NSString *html4 = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('p')[0].innerText"];//获取标签第一个p的值

     NSString *html5 = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerText"];//获取body里面的全部内容

      NSLog(@"%@",NSStringFromSelector(_cmd));

     */

}

3.和JS交互

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 关于UIWebView常见使用方法 的相关文章

  • 以编程方式触发iOS摇动事件

    如何以编程方式触发 iOS 中的摇动事件 我尝试过以下方法 但它总是崩溃 void shake NSLog TEST UIMotionEventProxy m NSClassFromString UIMotionEvent alloc in
  • 关于窗口层次结构的警告

    我的调试器中出现这样的警告 这是什么意思 Warning Attempt to present
  • 个人帐户开发者之间的 Apple 开发/分发证书

    我一直在到处寻找有关处理证书的正确答案 想象一下以下帐户 Joe拥有个人 Apple 帐户 但他根本不会编码 他只是发布了该应用程序并将其称为自己的 Bob还有一个个人 Apple 帐户 Bob 是一位编码专家 Joe 付费让他开发他的第一
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • UICollectionView 拖放文件夹创建

    我正在使用 UICollectionView 创建 iOS 画廊应用程序 我希望用户能够拖放图像来重新排序图库并创建文件夹 类似于 iPhone 上的主屏幕 我发现了以下内容tutorial http nshint io blog 2015
  • 避免 UIImage 的 imageNamed - 内存管理

    我正在经历这个链接 http akosma com 2009 01 28 10 iphone memory management tips 我遇到了一个点避免 UIImage 的 imageNamed 出于什么原因我们应该避免这种情况 它会
  • 如何反转 CGPath 的点顺序

    我想画一个圆圈 并用它打出字母 为此 我需要顺时针抚摸圆圈 逆时针抚摸字母 这一切都很好 但是当我使用 Core Text 获取字母路径时 我不知道如何从本质上反转该路径 不是镜像或旋转或任何东西 这很简单 我希望点笔画顺序是逆时针的 这实
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们
  • 核心数据 NSFetchRequest 还获取实体的子对象

    我是 iOS 开发和 Core Data 的新手 我有一个父 NSManagedObject class Units interface Properties NSManagedObject property nonatomic retai
  • 在 iOS5 中使用 UISegmentedControl 切换 ViewController

    我正在尝试一些非常简单的事情 但不知何故我无法让它发挥作用 我尝试做的就是使用 UISegmentedControl 在 2 个视图控制器之间切换 就像您可以在 App Store 应用程序的 突出显示 选项卡中看到的那样 我正在使用 iO
  • 如何提高包含大量小图像的 UCollectionView 的性能?

    在我的 iOS 应用程序中我有UICollectionView显示大约 1200 个小 35x35 点 图像 图像存储在应用程序包中 我正确地重用了UICollectionViewCell但仍然存在性能问题 具体取决于我处理图像加载的方式
  • 相当于 Interface Builder 中 UIButton 的动态类型“自动调整字体”设置?

    UILabel 有一个Dynamic Type Automatically Adjusts FontInterface Builder 属性检查器中的复选框 Interface Builder 中是否有等效项用于自动调整 UIButton
  • Xcode 无法找到 strip-frameworks.sh 目录

    我最近将 Xcode 更新到版本 7 1 其中包括 Swift 2 1 我安装了 Swift 2 1 没有遇到任何问题 在尝试运行我的项目后 我意识到我需要获取最新版本的 Realm 因为之前的版本不支持 Swift 2 1 我删除了旧框架
  • 具有自动布局的 UITableViewCell 中的 UILabel 高度错误

    我有一个UITableView单元格的固定高度为 100 点 这些单元格是在 xib 文件中创建的 该文件使用 3 个约束来固定UILabel到单元格的左 右和上边缘contentView 标签的垂直拥抱优先级设置为 1000 因为我希望单
  • 两者都实现了类。将使用两者之一

    我有一个项目 它具有使用 SocketRocket 的依赖项 通过 CocoaPods 安装 并从 HeapAnalytics 导入了静态库 显然 HeapAnalytics 库已经使用了 SocketRocket 编译时没有出现错误 但在
  • 无法将“SDWebImageActivityIndi​​cator”类型的值分配给“ST_SDWebImageIndicator”类型?

    I have multiple flavours targets in my Xcode project I am also using SDWebImage in my app Everything was working fine un
  • 防止UIScrollView的UIPanGestureRecognizer遮挡UIScreenEdgePanGestureRecognizer

    我有一个UIScrollView它填满了我应用程序的一页上的屏幕 但我希望允许用户从屏幕边缘平移以显示其后面的视图 问题是 UIScrollView 窃取了我的触摸UIScreenEdgePanGestureRecognizer在屏幕边缘
  • 如何防止 RealmSwift 列表中出现重复项?

    如何防止向列表中添加重复项RealmSwift 我有我的User作为领域对象 但真正的数据源是服务器 只是使用领域在本地缓存用户 当我从服务器获取当前用户数据时 我想确保存储在领域中的用户拥有来自服务器的所有播放列表 以及它们的曲目列表等
  • iOS - NSNotificationCenter 多个UIKeyboard通知

    我有两个视图控制器 我们称它们为 A 和 B 1 在 A 中 我显示一个包含文本字段的 popOver 2 B中有一个UITextView用于简单的文本编辑 我必须管理 A 和 B 中的键盘才能滚动键盘隐藏的内容 我知道如何重新定位内容 我
  • iOS 10 的错误? NSDate 日本地区时间描述和 24 小时休息

    这似乎是 iOS 10 的一个错误 在 iOS 8 和 9 中都可以 NSDate date description 的小时描述是错误的 它附加了 24 小时描述和 12 小时描述 我没有使用 NSDateFormatter 只是默认设置

随机推荐

  • TEXLIVE安装失败卡住问题解决

    Installing to C texlive 2021 Installing 0001 4151 time total texlive infra 424k Installing 0002 4151 time total 00 01 02
  • LVGL学习(4):输入设备的四种类型及物理按键的实现

    在有一些场合中 如野外情况 可能我们会选择使用物理按键来控制LVGL 而不是使用触摸屏 所以本篇文章就以物理键盘为例来介绍一下如何自定义输入设备与LVGL进行交互 文章目录 1 输入设备类型 2 物理键盘实现 2 1 输入设备驱动注册 2
  • java.net.SocketTimeoutException: Read timed out 问题解决

    问题描述 今天开发时发现 jdbc hive 连接执行 一个 hive sql 查询语句时 总是报org apache thrift transport TTransportException java net SocketTimeoutE
  • crmeb5.0修改会员价格展示条件

    api components 组件目录 components goodList index vue 商品展示组件 components productWindow index vue 产品属性组件 components shareRedPa
  • 软件系统架构有哪几种?

    互联网飞速发展的当下 有一种极其重要的门类也随之应运而生 那就是软件工程 而软件工程中 又有非常重要的一环 那就是软件架构 这也是各个互联网公司无论大小都必备的一个系统基础 那么什么是软件架构呢 事实上 架构在软件发明时的 N 多年以前 就
  • Java导入xml文件

    需求 前后端分离项目 后端Springboot框架 将学生信息通过xml文件格式导入 一个学生信息 以及该学生选择的学科 student xml文件格式如下 StudentController java PostMapping import
  • 逆向爬虫27 sojson反调加密

    逆向爬虫27 sojson反调加密 目标 掌握sojson的加密的特点和原理 使用静态文件替换sojson反调 一 sojson加密特点和原理 sojson是一种常用的js反调和加密手段 在学习如何处理它之前 我们需要先了解它的特点和原理
  • LightGBM参数介绍

    Xgboost和LightGBM部分参数对照 Xgboots LightGbm booster default gbtree boosting default gbdt eta default 0 3 learning rate defau
  • python 提示 keyError 的4种解决方法

    https blog csdn net u011089523 article details 72887163 在读取dict的key和value时 如果key不存在 就会触发KeyError错误 如 Python t a 1 b 2 c
  • SSD-Pytorch训练自己的VOC数据集&遇到的问题及解决办法

    SSD 训练 data init py data config py data voc0712 py layers modules multibox loss py ssd py train py 预训练文件vgg16 reducedfc
  • ‘settings.xml‘ has syntax errors 解决办法

    settings xml has syntax errors 解决办法 文章目录 settings xml has syntax errors 解决办法 参考链接 又是一个小知识点 pom xml中的
  • 基于pwntools编写pwn代码

    目录 预备知识 pwn pwntools 实验目的 实验环境 实验步骤一 1 Pwntools安装及模块 已装 2 常用模块详细介绍 实验步骤二 实验步骤三 预备知识 pwn Pwn 是一个黑客语法的俚语词 是指攻破设备或者系统 发音类似
  • 快速选择算法

    quick select 算法 LintCode 5 第k大元素 题目 在数组中找到第k大的元素 样例 给出数组 9 3 2 4 8 第三大的元素是 4 给出数组 1 2 3 4 5 第一大的元素是 5 第二大的元素是 4 第三大的元素是
  • Lingo软件的基本语法

    目录 基本语法 集合 数据 数据计算段 变量的初始化 模型的目标函数和约束条件 实时数据处理 注意 基本语法 集合 sets 集合名称1 成员列表1 属性1 1 属性1 2 属性1 n1 集合名称2 成员列表2 属性2 1 属性2 2 属性
  • 系统时间显示踩坑记录

    问题 签到前时间每秒变化显示 原始做法是 截取获取的系统时间的后九位 但是红米手机的系统时间最后两位不是秒 而是上下午的英文字母 导致小时截取不到 如图中间位置 希望实现如图左 方法 分别获取系统的时分秒 处理下不是两位的数字 然后拼接起来
  • 如何将文件重置或恢复到特定版本?

    问题描述 如何在特定的提交哈希 我通过 git log 和 git diff 确定 处将修改后的文件恢复到其先前的版本 解决方案1 一个优秀的自由职业者 应该有对需求敏感和精准需求捕获的能力 而huntsbot com提供了这个机会 假设您
  • LibCurl教程2

    http blog csdn net ljob2006 article details 4390612 2 1 LibCurl编程流程 在基于LibCurl的程序里 主要采用callback function 回调函数 的形式完成传输任务
  • 0401hive入门-hadoop-大数据学习.md

    文章目录 1 Hive概述 2 Hive部署 2 1 规划 2 2 安装软件 3 Hive体验 4 Hive客户端 4 1 HiveServer2 服务 4 2 DataGrip 5 问题集 5 1 Could not open clien
  • js踩坑 foreach中return不能跳出循环,for中才可以

    js踩坑 foreach中return不能跳出循环 for中才可以 如代码所示 const list 1 2 3 4 5 list forEach e gt if e 3 return console log e 结束 运行结果 通过上面的
  • iOS 关于UIWebView常见使用方法

    Step UIWebView 1 UIWebView常用方法 1 声明 property nonatomic strong UIWebView webView 1 代理 UIWebViewDelegate 2 ATS配置 info plis