在看了http://www.cnblogs.com/zhuqil/archive/2011/07/28/2119923.html一文博客后,根据参考做了一个差不多一样的小Demo,算是笔记记录


运行结果截图

    



1.创建一个新工程叫UIWebViewDemo; File->New->Project ->single View Application -> next



2.界面布局

拖动三个控件,Web View Text Field 和 Button把TextField和button放到Web View上面,也可以打开


   

调整三个控件所处位置

4.声明输出口

右键某个控件,然后拖动到WebViewViewController.h文件的@interface和@end之间

然后弹出一个框框,我们输入控件名字;

webView






textField





Button





再给button添加一个方法




然后我们声明一个UIActivityIndicatorView对象和一个 loadWebPageWithString方法,并添加上UIWebViewDelegate协议

#import <UIKit/UIKit.h>  @interface WebViewViewController : UIViewController<UIWebViewDelegate> @property (strong, nonatomic) IBOutlet UIWebView *webView; @property (strong, nonatomic) IBOutlet UITextField *textField; @property (strong, nonatomic) IBOutlet UIButton *button;  @property (strong,nonatomic) UIActivityIndicatorView *activityIndicatorView;  - (IBAction)buttonPressed:(id)sender;  -(void)loadWebPageWithString:(NSString *)urlString; @end

5.在我们声明控件输出口的时候,系统也会自动生成一些代码

@synthesize textField; @synthesize webView; @synthesize button; - (void)viewDidUnload {     [self setTextField:nil];     [self setWebView:nil];     [self setButton:nil];     [super viewDidUnload];      }  - (IBAction)buttonPressed:(id)sender {      } 
还需要在添加@synthesize activityIndicatorView

6.viewDidLoad方法中

- (void)viewDidLoad {     [super viewDidLoad]; //自动缩放页面,以适应屏幕 	webView.scalesPageToFit = YES;     webView.delegate = self;     //    指定进度轮大小     self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; //    设置进度轮的中心也可以[self.activityIndicatorView setCenter:CGPointMake(30, 30)];     [self.activityIndicatorView setCenter:self.view.center]; //  设置activityIndicatorView风格       [self.activityIndicatorView setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];     [self.webView addSubview:self.activityIndicatorView];     [self buttonPressed:nil];       }

7.实现方法代码部分


加载一个URL方法

-(void)loadWebPageWithString:(NSString *)urlString {     if (self.textField.text != nil) { //        追加一个字符串         urlString = [@"http://" stringByAppendingFormat:urlString];         NSURL *url = [NSURL URLWithString:urlString]; //        NSURLRequest类方法用于获取URL         NSURLRequest *request = [NSURLRequest requestWithURL:url]; //        webView加载URL         [webView loadRequest:request];     }       }

按钮事件

//按钮事件,点击按钮开始调用loadWebPageWithString方法 - (IBAction)buttonPressed:(id)sender {     [textField resignFirstResponder];     [self loadWebPageWithString:textField.text]; //    点击完button后隐藏textField和button     if (sender==button) {         textField.hidden = YES;         button.hidden = YES;     } }

UIWebView委托方法
//UIWebView委托方法,开始加载一个url时候调用此方法 -(void)webViewDidStartLoad:(UIWebView *)webView {     [self.activityIndicatorView startAnimating]; }
//UIWebView委托方法,url加载完成的时候调用此方法 -(void)webViewDidFinishLoad:(UIWebView *)webView {     [self.activityIndicatorView stopAnimating]; }
//加载url出错的时候调用此方法 -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { // 判断button是否被触摸     if (!self.button ) {                   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@""                                                         message:[error localizedDescription]                                                        delegate:nil                                               cancelButtonTitle:@"OK"                                               otherButtonTitles: nil];         [alert show];     }      }


8.另外说一下 UIActivityIndicatorView,实例提供轻型视图,这些视图显示一个标准的旋转进度轮,在IB中的控件



iPhone提供了几种不同样式风格的UIActivityIndicatorView。

activityIndicatorView有三种风格

typedef enum {

    UIActivityIndicatorViewStyleWhiteLarge,

    UIActivityIndicatorViewStyleWhite,

    UIActivityIndicatorViewStyleGray,

} UIActivityIndicatorViewStyle;

UIActivityIndicator- ViewStyleWhite和UIActivityIndicatorViewStyleGray是最简洁的。黑色背景下最适合白色版本的外观,白色背景最适合灰色外观。它非常瘦小,而且采用夏普风格。选择白色还是灰色时要格外注意。全白显示在白色背景下将不能显示任何内容。而UIActivityIndicatorViewStyleWhiteLarge只能用于深色背景。它提供最大、最清晰的指示器。

对于activityIndicatorView的实现把他放在了UIWebView的两个委托方法中

当开始加载一个URL时候,开始activityIndicatorView,加载完毕停止activityIndicatorView动画加载效果

 [self.activityIndicatorViewstartAnimating];

 [self.activityIndicatorViewstopAnimating];


9.在 -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error方法中,是检测加载出错时候调用此方法,当运行的时候还没输入URL地址就开始调用这个方法,提示not url信息,所以在这用了一个if判断,按钮是否触发事件,当输入一个URL之后,点击按钮GO才加载URL,然后在调用URL是否是有效的,[error localizedDescription ]是自动检测系统的错误信息;


源代码:http://download.csdn.net/detail/duxinfeng2010/4468804