
概述基于手机 网络环境问题 在UIWebView控件使用的时候,程序习惯添加UIActivityIndicatorView用以控制UIWebview的加载等待,在等待的时间内用户不允许 *** 作,所以我们还要在当前的UIWebview上添加一个透明的view(opaqueview)用以防止用户点击,然后把UIActivityIndicatorView添加到我们自己定义的view(opaqueview)上。这
基于手机 网络环境问题 在UIWebVIEw控件使用的时候,程序习惯添加UIActivityIndicatorVIEw用以控制UIWebvIEw的加载等待,在等待的时间内用户不允许 *** 作,所以我们还要在当前的UIWebvIEw上添加一个透明的vIEw(opaquevIEw)用以防止用户点击,然后把UIActivityIndicatorVIEw添加到我们自己定义的vIEw(opaquevIEw)上。这样当网页加载开始的时候我们把UIActivityIndicatorVIEw打开,当网页加载完毕的时候我们可以取消UIActivityIndicatorVIEw,从而实现了对UIWebVIEw的加载等待。
一.UIWebVIEw加载的时候通常有几种方法
1.loadRequest:
2.loadHTMLString:string baseURL:
3.loadData:MIMEType:textEnCodingname:baseURL:
其中baseURL 是指基准的url 是一个绝对的地址,程序要用到的其他资源就可以根据这个基准地址进行查找而不用再次定位到绝对地址;
二.UIWebVIEw中几个重要的函数 1.- (voID )webVIEwDIDStartLoad:(UIWebVIEw *)webVIEw 网页开始加载的时候调用
2.- (
voID )webVIEwDIDFinishLoad:(UIWebVIEw *)webVIEw 网页加载完成的时候调用 3.-(BOol )webVIEw:(UIWebVIEw *)webVIEw shouldStartLoaDWithRequest:(NSURLRequest *)request navigationType:(UIWebVIEwNavigationType )navigationType
当程序以UIWebVIEw加载方式1进行加载的时候就会调用到此函数,然后执行webVIEwDIDStartLoad函数,所以我们可以在此函数中进行一些请求解析,URL地址分析的工作。
4.- (voID)webVIEw:(UIWebVIEw *)webVIEw dIDFailLoaDWithError:(NSError *)error
是一个可选的函数,如果页面加载失败可以根据不同的错误类型反馈给用户不同的信息
三.代码实现
1.在.h文件中加载声明uiwebviewdelegate协议
声明WebVIEw
2.实现UIWebVIEw
WebVIEw = [[ UIWebVIEw alloc] initWithFrame: CGRectMake(x,x,x )];
[ WebVIEw setUserInteractionEnabled: YES ]; //是否支持交互
[ WebVIEw setDelegate: self ]; //委托
[ WebVIEw setopaque: YES ]; //透明
[ self . vIEw addSubvIEw : WebVIEw]; //加载到自己的vIEw
url = [[ NSURL alloc ] initWithString :@"http:"];
[ WebVIEw loadRequest:[ NSURLRequest requestWithURL: url ]]; //笔者习惯采用loadRequest方式,你可以采用其他方式
opaquevIEw = [[ UIVIEw alloc] initWithFrame: CGRectMake(x , x , x )]; //opaquevIEw 需要在.h文件中进行声明 用以做UIActivityIndicatorVIEw的容器vIEw;
activityIndicator = [[ UIActivityIndicatorVIEw alloc] initWithFrame: CGRectMake( x , x )];//需要在.h文件中进行声明
[ activityIndicator setCenter : opaquevIEw. center ];
[ activityIndicator setActivityIndicatorVIEwStyle: UIActivityIndicatorVIEwStyleWhite]; //颜色根据不同的界面自己调整
[ opaquevIEw setBackgroundcolor:[ UIcolor blackcolor]];
[ opaquevIEw setAlpha: 0.6 ];
[ self . vIEw addSubvIEw : opaquevIEw];
[ opaquevIEw addSubvIEw : activityIndicator];
接下来添加
- (voID )webVIEwDIDFinishLoad:(UIWebVIEw *)webVIEw {
[activityIndicator stopAnimating];
opaquevIEw.hIDden = YES ;
}
- (voID )webVIEwDIDStartLoad:(UIWebVIEw *)webVIEw {
[ activityIndicator startAnimating ];
opaquevIEw.hIDden = NO ;
}
这样就简单的实现了UIWebVIEw控件的加载使用,不同的页面均有加载的等待。 ****Js调用iphone中的方法的实现***** 假设HTML中的代码为:
<body>
<div style="-webkit-text-size-adjust:150%">
<h2>Title</h2>
The page Title is displayed in the navigation bar automatically.
<p>
<img src="moonlight.jpg" alt="picture" Title="moonlight" />
<a href="JavaScript:clicklink();">More information</>
<script>
function sendCommand(cmd,param){
var url="testapp:"+cmd+":"+param;
document.location = url;
}
function clicklink(){
sendCommand("alert","Muhahahaha");
}
</script>
</body>
iphone中的代码为:
- (BOol)webVIEw:(UIWebVIEw*)webVIEw shouldStartLoaDWithRequest:(NSURLRequest*)request navigationType:(UIWebVIEwNavigationType)navigationType {
Nsstring *requestString = [[request URL] absoluteString];
NSArray *components = [requestString componentsSeparatedByString:@":"];
if ([components count] > 1 && [(Nsstring *)[components objectAtIndex:0]isEqualToString:@"testapp"]) {
if([(1] @"alert"])
{
UIAlertVIEw *alert = [[UIAlertVIEw alloc] initWithTitle:@"Alert from Cocoa touch message:[components objectAtIndex:2] delegate:self cancelbuttonTitlenil @H_606_1403@otherbuttonTitles:@"OK",nil];
[alert show];
return NO;
return YES}
总结
以上是内存溢出为你收集整理的UIWebView 使用方法全部内容,希望文章能够帮你解决UIWebView 使用方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)