在iphone 上面显示显示页面我们知道有两种方法
1、同步显示
就是在webView请求url的时候一次性读取页面信息并且显示出来
这中的实现也是最简单的
[self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
这样就可以显示出google的主页面了
2、异步请求数据显示
这种方法就要调用webview的delegate来实现
其中先生成一个NSURLRequest
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:timeout];
实现连接和代理的设置
urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
代理的实现
//接收数据
- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)receiveData
{
if (data == nil)
{
data = [[NSMutableData alloc] initWithCapacity:2048];
}
[data receiveData];
}
//数据接收完成
- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection
{
self.urlConnection=nil;
}
接收完数据以后对NSData数据显示操作和前面一样了
-------------------------------------------------------------------------------
以上方法是显示怎么显示加载页面的,那如何加载页面的源码呢?即在显示html view->source
textView = [[UITextView alloc] initWithFrame:webFrame];
NSError *error;
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
//因为baidu的编码格式为gb2312格式,所以我们要将CFString中的格式转化为NSStringEncoding的格式,因为在NSString 类中找不到gb2312的编码格式
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *content = [NSString stringWithContentsOfURL: url
encoding:enc
error:&error];
if (content == nil) {
NSLog(@"nil page source");
}
else {
NSLog(@"not nil the content ==== %@", content);
}
self.textView.text = content;
**********************************************************************
以上显示源码的方法有缺陷就是当我们不知道页面的编码格式的时候(可能是UTF8,gbk,gb2312…格式的话),我们就没有办法来读取了
其中在网上有找到一个
读取本机中文编码的几种格式(但是试验没有成功)
const NSStringEncoding *encodings = [NSString availableStringEncodings];
NSStringEncoding encoding;
int i = 0;
while ((encoding = *encodings++) != 0) {
NSLog(@"%d: %@ == 0x%x/n", i++, [NSString localizedNameOfStringEncoding:encoding], encoding);
}