【UIWebView网络浏览器】

通过webView的loadRequest方法可以发送请求显示相应的网站,例如:

    NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"];// 创建请求数据NSURLRequest *request = [NSURLRequest requestWithURL:url];// 向服务器发送请求[self.webView loadRequest:request];

通过使用searchBar,可以实现网址的输入,searchBar有一个delegate属性可以将控制器设为其代理,下面实现了一个简易的浏览器。

首先是调用代理方法来监听搜索按钮:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{[self.view endEditing:YES];[self searchWithNSStringUrl:searchBar.text];}

然后实现搜索栏信息的解析,注意没有http://要补全的逻辑方法:

使用NSStringFromRange方法可以实现字符串的子串位置查找,通过判断range的location成员是否等于NSNotFound可以判断是否匹配失败。

- (void)searchWithNSStringUrl:(NSString *)surl{NSRange range = [surl rangeOfString:@"http://"];NSLog(@"range = %@",NSStringFromRange(range));if (range.location == NSNotFound) {NSString *head = @"http://";surl = [head stringByAppendingString:surl];}NSURL *url = [NSURL URLWithString:surl];// 创建请求数据NSURLRequest *request = [NSURLRequest requestWithURL:url];// 向服务器发送请求[self.webView loadRequest:request];}

直接判断字符串是否以某字符串开头可以直接使用NSString的hasPrefix:方法。

前进和后退的实现:

直接将按钮的前进和后退事件和按钮绑定。

一些细节:

1.在不能后退和前进时应该将按钮禁用,不同页面是通过链表连接的。

判断的方式:通过判断webView的链表,也可以通过canGoBack和canGoForward两个BOOL变量来判断。

2.地址栏应该随着网页内容而改变,通过获取WebView的URL,并通过absoluteString方法转为字符串:

- (void)webViewDidStartLoad:(UIWebView *)webView{NSURL *url = webView.request.URL;NSString *surl = [url absoluteString];self.searchBar.text = surl;
}

使用HTML:

PhoneGap是基于HTML 5开发的一套框架,只要会做网页就可以开发应用,但是不能使用原生的硬件。

好处是可以一次性开发多个平台的应用。

【利用UIWebView加载文件】

可以通过Bundle或者沙盒加载。

传入文件的URL即可加载doc、txt、图片、pdf等各种内容。

例如读入一本pdf:

NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"English.pdf" withExtension:nil];
NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];
[self.webView loadRequest:request];

还可以通过dataDetectorTypes来设定需要高亮链接的文本类型:例如电话、地址、邮箱等

_webView.dataDetectorTypes = UIDataDetectorTypeAll;

【利用UIWebView加载HTML】

[self.webView loadHTMLString:@"<h1>hello</h1>" baseURL:nil];

利用这个功能可以实现删除广告等功能。

【UIWebView能够加载文件的原因】

MIME type是一个互联网标准,服务器将MIME标识符放入传送的数据中告诉浏览器使用哪种插件读取相关文件,MIME类型可以包含视频、图像、文本等数据。

网络通过二进制数据流来传输数据,客户端通过MIME type能够知道如何处理接收的数据。

转载于:https://www.cnblogs.com/aiwz/p/6154191.html

(五十九)iOS网络基础之UIWebView简易浏览器实现相关推荐

  1. Python编程基础:第五十九节 守护线程Daemon Threading

    第五十九节 守护线程Daemon Threading 前言 实践 前言 守护线程是在后台运行的线程,对程序的运行并不重要,你的程序在退出前不会等待守护线程的完成,此类线程的特点是,当程序中主线程及所有 ...

  2. [Python从零到壹] 五十九.图像增强及运算篇之图像锐化Scharr、Canny、LOG实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. 互联网创新创业大赛优秀范例_第五十九期创业沙龙——“互联网+”大学生创新创业大赛实践案例...

    原标题:第五十九期创业沙龙--"互联网+"大学生创新创业大赛实践案例 第五十九期创业沙龙 第六届"互联网+".2020年"创青春"系列竞赛开 ...

  4. 59深度解密五十九:利用“抖音”进行吸粉的简单、另类玩法

    网络营销推广技术.技巧深度解密(五十九)指南: 1.本文档适合零基础和互联网营销推广工作者,主要讲解抖音吸粉的问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律,尊重原创 ...

  5. 如何选择适合你的兴趣爱好(五十九),芭蕾舞

    围城网的摇摇今天给大家带来了"如何选择适合你的兴趣爱好"系列专辑的第五十九讲 --芭蕾舞.如果问你芭蕾舞与其他舞有什么不同,估计每一个人都会说,那就是跳舞时要踮起脚尖.芭蕾舞最重要 ...

  6. [笔记]Windows核心编程《十九》DLL基础

    系列文章目录 [笔记]Windows核心编程<一>错误处理.字符编码 [笔记]Windows核心编程<二>内核对象 [笔记]Windows核心编程<三>进程 [笔记 ...

  7. 【Microsoft Azure 的1024种玩法】五十九.基于Azure云平台快速搭建GitLab应用实现代码托管

    [简介] GitLab是由GitLab Inc.开发,一款基于Git的完全整合的软体开发平台,以 Git 作为代码管理工具并实现自托管的 Git 项目仓库,本篇文章主要介绍如何在Azure Virtu ...

  8. 【正点原子STM32连载】第五十九章 USB U盘(Host)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  9. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

最新文章

  1. ubuntu KDE桌面
  2. STM32 基础系列教程 14 - IIC
  3. 【hdu 1061】Rightmost Digit(水题 快速幂 分治)
  4. 专家称中国***袭美是炒作
  5. python 清除字符串中的 emoji 表情
  6. SpringBoot入门之上传文件
  7. 中国农业工作服行业市场供需与战略研究报告
  8. 泰山游记:为何爬山后大腿前部很酸?
  9. 如何批量将 Txt 文本文档转换为 xlsx 格式的 Excel 文档
  10. 模电数电c语言笔试题,模电数电题面试题集锦
  11. 百度文库下载文档,没财富值,没下载卷也能下载
  12. 提高效率:17款超赞的谷歌chrome浏览器插件、扩展程序
  13. 为什么是深度神经网络而不是宽度神经网络?增加神经网络的深度相比于增加宽度有哪些优点?
  14. 如何批量制作ITF-14条码
  15. 检查计算机设备报告书,关于计算机安全检查的自查报告范文
  16. 神经网络发展的三个阶段,人工神经网络的发展
  17. 格兰杰检验的基本步骤_如何用格兰杰检验、协整对数据进行分析_格兰杰因果检验...
  18. 那些你不愿说给领导的话
  19. java随机答题器_Advanced Random Auto Clicker免费版下载-多合一随机自动答题器 v4.21 免费版 - 安下载...
  20. [论文速览]A Neural Attention Model for Sentence Summarization

热门文章

  1. linux misc device字符杂项设备驱动
  2. 神圣的傻瓜,善良的杰克·凯鲁亚克:纪念《在路上》50年
  3. Markdown简介和基本语法
  4. Fedora gedit 打开txt文件乱码的解决
  5. 使用UltraEdit来拷贝粘贴二进制
  6. leetcode跳跃游戏C语言,LeetCode:跳跃游戏
  7. python弹球游戏绑定鼠标事件_用python和pygame游戏编程入门-弹球[鼠标控制]
  8. java 实体类 临时注解_JPA:Java持久层API--配置流程
  9. 删除 索引 外键 mysql_MySQL无法删除外键约束中所需的索引
  10. 李宏毅机器学习课程11~~~为何要深?