iOS中UIWebView的使用

来源:互联网 发布:java面向对象定义 编辑:程序博客网 时间:2024/05/12 00:59
UIWebView *webview = [[UIWebView alloc] initWithFrame:self.view.bounds];
webview.scalesPageToFit = YES;//自动适应屏幕
[self.view addSubview:webview];


UIWebView 加载网络地址
用UIWebView来加载网络地址
NSURLRequest *request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://www.baidu,com"]];
[self.view addSubview:webview];
[webview loadRequest:request];





UIWebView加载本地资源
通过NSURLRequest加载
NSString *path = [[NSBundle mainBundle] pathForResource:@"swift" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];//创建URL
NSURLRequest *request = [NSURLRequest requestWithURL:url];//创建NSURLRequest
[webview loadReqeust:request];//加载



通过NSString加载
UITableView还支持一个NSString对象作为源来加载。你可以为其提供一个基础URL,来指导UIWebView
对象如何跟随连接和加载远程资源:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *htmlstring = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[webview loadHTMLString:htmlString baseURL:[NSURL URLWithString:path]];



自动检测电话
设置这个属性,如果在加载的网页中遇到电话号,直接单击就可以打开
webview.dataDetectorTypes = UIDataDetectoryTypePhoneNumber;//自动检测网页上的电话号码,单击可以拨打



设置代理和代理方法
UIWebView有五个代理方法,我们可以在不同的代理方法中,完成不同的需求。



//设置代理
webview.delegate = self;


//代理方法
- (BOOL)webview:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:
(UIWebViewNavigationType)navigationType
{
//返回YES,进行加载。通过UIWebViewNavigationType可以得到请求发起的原因
return YES;
}


- (void)webViewDidStartLoad:(UIWebview *)webView
{
//开始加载,可以加上~菊花
}


- (void)webViewDidFinishLoad:(UIWebView *)webview
{
//完成加载
}


- (void)webview:(UIwebView *)webView didFailLoadWithError:(NSError *)error
{
//加载出错
}


创建加载、停止、后退、前进按钮


创建四个按钮,分别是加载按钮、停止按钮、返回按钮、前进按钮:


NSArray *array = [NSArray arrayWithObjects:@"加载","停止","返回","前进","nil"];
int far = (SCREEN.width - 200)/5;
for(int i =0;i<array.count;i++)
{
UIButton *btn = [[UIButton alloc] init];
btn.frame = CGRectMake((i + 1)*far+50*i,SCREEN.height - 60,50,40);
btn.tag = 200 +i;
[btn addTarget:self action:@selector(actionClick:)forControlEventTouchUpInside];
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[btn setBackgroundColor:[UIColor yellowColor]];
[btn setTitle:array[i] forState:UIControlStateNornal];
[self.view addSubview:btn];
}


前进后退
给四个按钮绑定事件,根据tag值区分每个点击事件,其实我也想吐槽一下tag用得不掉炸天
就这么个意思将就用吧
- (void)actionClick:(UIButton *)button
{
    switch (button.tag) {
        case 200:
        {
            [self.webView reload];//加载
        }
            break;
        case 201:
        {
            [self.webView stopLoading];//停止加载
        }
            break;
        case 202:
        {
            [self.webView goBack];//返回
        }
            break;
        case 203:
        {
            [self.webView goForward];//前进
        }
            break;
        default:
            break;
    }
}
0 0