iOS开发webView的使用二

#import "ViewController.h"

@interface ViewController ()<UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *goBack;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *goForward;

@end

@implementation ViewController

#pragma mark ----------------------
#pragma mark Life Cycle
- (void)viewDidLoad
{
    [super viewDidLoad];

    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    //加载网页
    [self.webView loadRequest:request];

    //设置代理
    self.webView.delegate = self;
}

#pragma mark ----------------------
#pragma mark Events
- (IBAction)goBackBtnClick:(id)sender
{

    [self.webView goBack];
}
- (IBAction)goForwardBtnClick:(id)sender
{
    [self.webView goForward];

}
- (IBAction)reloadBtnClick:(id)sender
{
    [self.webView reload];
}

#pragma mark ----------------------
#pragma mark UIWebViewDelegate

//即将加载某个请求的时候调用
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog(@"%@",request.URL.absoluteString);
    //简单的请求拦截处理
    NSString *strM = request.URL.absoluteString;
    if ([strM containsString:@"360"]) {
        return NO;
    }
    return YES;
}

//1.开始加载网页的时候调用
-(void)webViewDidStartLoad:(UIWebView *)webView
{
    NSLog(@"webViewDidStartLoad");
}

//2.加载完成的时候调用
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"webViewDidFinishLoad");

    self.goBack.enabled = self.webView.canGoBack;
    self.goForward.enabled = self.webView.canGoForward;
}

//3.加载失败的时候调用
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    NSLog(@"didFailLoadWithError");
}

@end

#####8 WebView的基本使用

```objc

1 概念性知识

01 webView是有缺点的,会导致内存泄露,而且这个问题是它系统本身的问题。

02 手机上面的safai其实就是用webView来实现的

03 现在的开发并不完全是原生的开发,而更加倾向于原生+Html5的方式

04 webView是OC代码和html代码之间进行交互的桥梁

2 代码相关

/*A*网页操控相关方法**/

[self.webView goBack];      回退

[self.webView goForward];   前进

[self.webView reload];      刷新

//设置是否能够前进和回退

self.goBackBtn.enabled = webView.canGoBack;

self.fowardBtn.enabled = webView.canGoForward;

/*B*常用的属性设置**/

self.webView.scalesPageToFit = YES; 设置网页自动适应

self.webView.dataDetectorTypes = UIDataDetectorTypeAll; 设置检测网页中的格式类型,all表示检测所有类型包括超链接、电话号码、地址等。

self.webView.scrollView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);

/*C*相关代理方法**/

//每当将加载请求的时候调用该方法,返回YES 表示加载该请求,返回NO 表示不加载该请求

//可以在该方法中拦截请求

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

{

return ![request.URL.absoluteString containsString:@"dushu"];

}

//开始加载网页,不仅监听我们指定的请求,还会监听内部发送的请求

-(void)webViewDidStartLoad:(UIWebView *)webView

//网页加载完毕之后会调用该方法

-(void)webViewDidFinishLoad:(UIWebView *)webView

//网页加载失败调用该方法

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

/*D*其它知识点-加载本地资源**/

NSURL *url = [[NSBundle mainBundle] URLForResource:@"text.html" withExtension:nil];

[self.webView loadRequest:[NSURLRequest requestWithURL:url]];

```

#####9 HTML

```objc

1.Html决定网页的内容,css决定网页的样式,js决定网页的事件

2.html学习网站:http://www.w3school.com.cn

时间: 2024-10-12 16:25:24

iOS开发webView的使用二的相关文章

iOS开发CoreAnimation解读之二——对CALayer的分析

iOS开发CoreAnimation解读之二——对CALayer的分析 一.UIView中的CALayer属性 1.Layer专门负责view的视图渲染 2.自定义view默认layer属性的类 二.几种系统的Layer类 1.CAEmitterLayer 2.CAGradientLayer 3.CAEAGLLayer 4.CAReplicatorLayer 5.CAScrollLayer 6.CAShapeLayer 7.CATextLayer 8.CATiledLayer 9.CATrans

IOS开发学习笔记(二)-语音识别(科大讯飞)

上次简单地讲解了如何利用科大讯飞完成语音合成,今天接着也把语音识别整理一下.当然,写代码前我们需要做的一些工作(如申请appid.导库),在上一篇语音合成的文章当中已经说过了,不了解的可以看看我上次的博文,那么这次直接从堆代码开始吧. 详细步骤: 1.导完类库之后,在工程里添加好用的头文件.在视图里只用了一个UITextField显示识别的内容,两个UIButton(一个开始监听语音,一个结束监听),然后引入类.添加代理,和语音合成的一样. MainViewController.h 1 #imp

ios开发原生的扫描二维码的实现以及限制扫描区域rectOfInterest遇到的一些坑

早前面试的时候被问到扫描使用的是什么 脱口而出用的Zbar ,然后就问为何不用原生的,效率更高啊,话说刚开始干那时候只求实现,不求效率,也不知怎么的回答.现在回想,最好的回答就是: 需要相册扫描,原生的实现不了啊. ZBar 优点: 可以实现相册相片扫描 但是效率有点低. 原生的: 效率高,但是不能做相册扫描. 下面放代码 做了些许优化 主要体现在,首次进入扫一扫vc 启动扫一扫的代码放在了 -(void)viewDidAppear:(BOOL)animated ,便于先进入在启动,不会给人卡的

IOS开发-数据持久化(二)【sqlite数据库】

概要 本章主要简示了IOS开发中使用sqlite来持久化数据,其使用方法和C++中使用sqlite基本一致. 结果展示 (其实没啥看的) 流程概要 1.因为使用的是以前的工程,所以主需要再拖拉两个按钮就差不多了 2.因为要使用sqlite,所以需要引用sqlite库(sqlite框架),在工程设置里面的,如下图所示 3.在原先的序列化类里面添加保存和加载数据到数据库的函数,即可,具体见代码. 主要代码 数据库操作代码 -(id)initWithFilePath:(NSString*)file {

iOS开发Swift篇—(二)变量和常量

一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 在实现 RC4加密算法时Objective-C的的性能是Python的127倍,Swift的性能是Python的220倍 有持怀疑态度的国外程序员,也对Objective-C和Swift的性能进行了测试 http://www.splasmata.com/?p=2798 (2)说明 目前的性能不是开发者最需要担心的问题 苹果已经全盘掌握了这个

IOS开发技巧快速生成二维码

随着移动互联网的发展,二维码应用非常普遍,各大商场,饭店,水果店 基本都有二维码的身影,那么ios中怎么生成二维码呢? 下面的的程序演示了快速生成二维码的方法: 在ios里面要生成二维码,需要借助一个框架:#import <CoreImage/CoreImage.h>  所有首先我们需要在我们的项目中引入这个框架 下面是核心代码: 准备工作:首先在storyboard里面添加一个UIImageView 然后脱线 到控制器里面 起名为imageView 然后再控制器的viewDidload里面写

ios开发入门篇(二):Objective-C的简单语法介绍

一:面向对象的思想 objective-c与C语言的编程思想不同,C语言是面向过程的编程,而objective-c则是面向对象的编程,所谓面向对象,我个人的理解,就是抽象.将具有一定共同点的实物抽象成一个个类,对其进行封装,继承,对实物本身进行操作. 二:Objective-C的历史 objective-c是以SmallTalk为基础,建立在C语言之上,并兼容c与c++的一门编程语言.20世纪80年代早期由 Brad J.Cox设计,2007年苹果公司发布了objective-c 2.0,并在i

iOS开发之蓝牙(二)CoreBluetooth

Core Bluetooth的使用场景 运动手环.智能家居.嵌入式设备等等(金融刷卡器.心电测量器) Core Bluetooth测试比较麻烦,正常情况下,得至少有2台真实的蓝牙4.0设备 Core Bluetooth的核心结构图 Core Bluetooth的基本常识 Core Bluetooth的基本常识 每个蓝牙4.0设备都是通过服务(Service)和特征(Characteristic)来展示自己的 一个设备必然包含一个或多个服务,每个服务下面又包含若干个特征 特征是与外界交互的最小单位

IOS开发常用插件(二)

SQLite是一个开源的嵌入式关系数据库,它在2000年由D. Richard Hipp发布,它的减少应用程序管理数据的开销,SQLite可移植性好,很容易使用,很小,高效而且可靠.SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程.从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎. 嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理.因为客户端和服务器在同一进程空间运行.SQLite 的数据库权限只依赖于文件系统