#import "ViewController.h"



@interface ViewController () <UIWebViewDelegate>



@property(nonatomic,weak)UIWebView* web;

@end



@implementation ViewController



- (void)viewDidLoad {

    [super viewDidLoad];

    

    [self _setTextField];

    

    [self _loadWebView];

    

}



#pragma mark - 设置输入框

- (void)_setTextField{

    self.tf.clearButtonMode=UITextFieldViewModeWhileEditing;

}



#pragma mark - 载入WebView

- (void)_loadWebView{

    UIWebView* web=[[UIWebView alloc] init];

    web.frame=CGRectMake(0,self.view.frame.size.height,self.view.frame.size.width,self.view.frame.size.height-42 );

    self.web=web;

    web.delegate=self;

    [self.view addSubview:web];

    

    

}



#pragma mark - 放弃第一响应

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    [self.tf resignFirstResponder];

    

}



#pragma mark - Action

- (IBAction)backAction:(id)sender {

    [self.web goBack];

//    self.web.frame=CGRectMake(0,self.view.frame.size.height,self.view.frame.size.width,self.view.frame.size.height-42 );

    

}



- (IBAction)forwardAction:(id)sender {

    [self.web goForward];

    self.web.frame=CGRectMake(0,20,self.view.frame.size.width,self.view.frame.size.height-50);

}



- (IBAction)undoAction:(id)sender {

    [self.web stopLoading];

}



- (IBAction)refreshAction:(id)sender {

    [self.web reload];

}



- (IBAction)searchAction:(id)sender {

    [self.tf resignFirstResponder];

    

    self.web.frame=CGRectMake(0,20,self.view.frame.size.width,self.view.frame.size.height-60);



    [self _sendRequest];

}



#pragma mark - UIWebViewDelegate

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

    

    

    return YES;

}



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



}



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

//    NSLog(@"%d===%d",[webView canGoBack],[webView canGoForward]);

    self.backBt.enabled=[webView canGoBack];

    self.forwardBt.enabled=[webView canGoForward];

    self.refresh.enabled=([webView canGoBack] ||[webView canGoForward]);

}



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

    NSLog(@"%@",error);



}



- (void)_sendRequest{

    //http://www.baidu.com

    NSURL* url=[NSURL URLWithString:self.tf.text];

    NSURLRequest* request=[NSURLRequest requestWithURL:url];

    [self.web loadRequest:request];

}



@end

UIWebView的使用,简单浏览器的实现的更多相关文章

  1. 基于Gecko内核的简单浏览器实现

    分享一个基于Gecko内核的简单浏览器实现过程. 项目需要需要开发一个简单浏览器,由于被访问的网页中有大量Apng做的动画,使用IE内核的webbrowser不能播放,使用基于WebKit和Cefsh ...

  2. IOS开发-UI学习-UIWebView,简单浏览器的制作

    制作一个简单的浏览器,包含网址输入框,Search按钮,前进.回退按钮,UIWebView就这几个简单的控件. UITextField:用来输入网址: UIbuttom:实现前进,后退,搜索等功能: ...

  3. 爬虫技术 -- 进阶学习(八)模拟简单浏览器(附c#代码)

    由于最近在做毕业设计,需要用到一些简单的浏览器功能,于是学习了一下,顺便写篇博客~~大牛请勿喷,菜鸟练练手~ 实现界面如下:(简单朴素版@_@||) button_go实现如下: private vo ...

  4. 爬虫技术(五)-- 模拟简单浏览器(附c#代码)

    由于最近在做毕业设计,需要用到一些简单的浏览器功能,于是学习了一下,顺便写篇博客~~大牛请勿喷,菜鸟练练手~ 实现界面如下:(简单朴素版@_@||) button_go实现如下: private vo ...

  5. C# 网络编程之最简单浏览器实现

    最近学习C#网络编程的HTTP协议编程,HTTP即Hypertext Transfer Protocol的缩写,意为:超文本传输协议. 其中与HTTP相关的知识主要有六个类的知识,分别是 (1).Ht ...

  6. 在 .NET 中开发基于 Chrome 内核的浏览器-创建一个简单浏览器

    首先在 http://www.cftea.com/tools/downloads/Cef.zip 下载文件包. 一.将文件解压拖入到 Visual Studio 对应的 WinForm 项目中. 二. ...

  7. 001 - 使用鸿蒙WebView创建简单浏览器 step 1

    打开官网,找到WebView的文档(模拟器不支持) 鸿蒙webview的开发指南(原始链接,方便大家识别并点击):https://developer.harmonyos.com/cn/docs/doc ...

  8. python3使用pyqt5制作一个超简单浏览器

    我们使用的是QWebview模块,这里也主要是展示下QWebview的用法. 之前在网上找了半天的解析网页的内容,都不是很清楚. 这是核心代码: webview = Qwebview() webvie ...

  9. [flex] as3.0 实现基于air的简单浏览器

    <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx= ...

随机推荐

  1. C#调用Geocoding API进行地理编码与逆编码

    使用C#调用Geocoding API来将地址转为经纬度,或者将经纬度转变为具体的地址. Geocoding API的详细介绍参见:http://developer.baidu.com/map/web ...

  2. MySQL索引的查看创建和删除

    1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有 ...

  3. POJ 3436 ACM Computer Factory (拆点+输出解)

    [题意]每台计算机由P个零件组成,工厂里有n台机器,每台机器针对P个零件有不同的输入输出规格,现在给出每台机器每小时的产量,问如何建立流水线(连接各机器)使得每小时生产的计算机最多. 网络流的建图真的 ...

  4. shell 全局和局部变量

    /******************************************************************** * shell 全局和局部变量 * 声明: * 到目前为止, ...

  5. 【转】使用NDK生成native C/C++的可执行程序

    原文网址:http://www.linuxidc.com/Linux/2011-08/40901.htm 众所周知, NDK可以生成lib,让java程序通过jni来调用,其实,NDK也可以生成C/C ...

  6. 学习面试题Day05

    1.如何理解数组在Java中作为一个类? Java的数组本质上是一个类,该类还保存了数据类型的信息.该类通过成员变量的形式来保存数据,并且通过[]符号,使用下标来访问这些数据.在处理基本类型数据时,数 ...

  7. 【转】Eclipse配置Struts2问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

    我的解决方案 一开始,我是依照某本教材,配置了User Libraries(名为struts-2.2.3, 可供多个项目多次使用), 然后直接把struts-2.2.3引入过来(这个包不会真正的放在项 ...

  8. LINQ之路系列

    Life a Poem http://www.cnblogs.com/lifepoem/archive/2011/11/22/2258830.html

  9. Selenium2Library中的Get Alert Message

    今天在处理页面的弹出框(alert)时,发现Get Alert Message 并不如字面意思这么简单 函数说明如下: 很明了:(1)返回alert 的text (2)如果没有alert,则该keyw ...

  10. 动态加载JS(css)文件

    <script language="javascript">document.write("<script src='test.js'><\ ...