UIWebView總結


原博文地址:http://blog.csdn.net/iunion/article/details/7963291


設置UIWebView透明


[cpp] view plaincopyprint?

  1. [webview setBackgroundColor:[UIColor clearColor]];  

  2.   

  3. webview.opaque = NO;  




禁止UIWebView滾動 


[cpp] view plaincopyprint?

  1. webView.scrollView.bounces = NO; //__IPHONE_5_0  

[cpp] view plaincopyprint?

  1. UIScrollView *scrollView = (UIScrollView *)[[webView subviews] objectAtIndex:0];  

  2. scrollView.bounces = NO;   




獲取UIWebView高度


[cpp] view plaincopyprint?

  1. - (void)webViewDidFinishLoad:(UIWebView *)webView1  

  2. {  

  3.     UIScrollView *scrollView = (UIScrollView *)[[webView subviews] objectAtIndex:0];  

  4.     CGFloat webViewHeight = [scrollView contentSize].height;  

  5.     NSString *curHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"];  

  6.   

  7.     CGRect newFrame = webView.frame;  

  8.     newFrame.size.height = webViewHeight;  

  9.     webView.frame = newFrame;   

  10. }  




使用JS給UIWebView添加事件響應

1.首先定義事件的JavaScript


[cpp] view plaincopyprint?

  1. // timeStamp 微秒  

  2. static NSString * const webTouchJavaScriptString =  

  3.     @"<script language=\"javascript\">document.ontouchstart=function(event){\  

  4.     x=event.targetTouches[0].clientX;\  

  5.     y=event.targetTouches[0].clientY;\  

  6.     time=event.timeStamp;\  

  7.     document.location=\"wiweb:touch:start:\"+x+\":\"+y+\":\"+time;};\  

  8.     document.ontouchmove=function(event){\  

  9.     x=event.targetTouches[0].clientX;\  

  10.     y=event.targetTouches[0].clientY;\  

  11.     document.location=\"wiweb:touch:move:\"+x+\":\"+y;};\  

  12.     document.ontouchcancel=function(event){\  

  13.     document.location=\"wiweb:touch:cancel\";};\  

  14.     document.ontouchend=function(event){\  

  15.     time=event.timeStamp;\  

  16.     document.location=\"wiweb:touch:end:\"+time;}; </script>";  


2.組織字符串



[cpp] view plaincopyprint?

  1. NSString *webviewText = @"<style>body{margin:0;background-color:transparent;color:#000000;word-wrap:break-word;word-break:break-all;font:18px/22px system}</style>";  

  2. NSString *htmlString = [webviewText stringByAppendingFormat:@"%@", @"自定SDFSDFSDFSDF義字體fsdgjdlagj asdkgjksdh卡號給卡仕達;逛了會街啊啊流口水 http://www.baidu.com 的感覺卡拉;四大金剛;拉開始打工綠卡;但是結果來看;就愛上的看過就卡的;上來講趕快來;啊都是經過後ihgoiadsg;肯定是噶上的好;拉克絲的價格愛國阿斯頓改了可"];  

  3.   

  4. NSString *newHTMLString=[htmlString stringByAppendingString:webTouchJavaScriptString];  


3.事件響應



[cpp] view plaincopyprint?

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

  2. {  

  3.     BOOL result = YES;  

  4.     NSURL *requestURL =[[request URL] retain];  

  5.     NSString *requestString = [[request URL] absoluteString];  

  6.     static BOOL bstart = NO;  

  7.     static BOOL bmove = NO;  

  8.     static double lasttime = 0;  

  9.       

  10.     NSString *str = [requestURL scheme];  

  11.     if ( ([str isEqualToString:@"http"] || [str isEqualToString:@"https"] || [str isEqualToString:@"mailto"] || [str isEqualToString:@"tel"])  

  12.         && (navigationType == UIWebViewNavigationTypeLinkClicked) )  

  13.     {  

  14.         result = ![[UIApplication sharedApplication] openURL:[requestURL autorelease]];  

  15.     }  

  16.     else  

  17.     {  

  18.         [requestURL release];  

  19.         NSArray *components = [requestString componentsSeparatedByString:@":"];  

  20.         if ([components count] > 2   

  21.             && [(NSString *)[components objectAtIndex:0] isEqualToString:@"wiweb"]  

  22.             && [(NSString *)[components objectAtIndex:1] isEqualToString:@"touch"])  

  23.         {  

  24.             NSString *eventString=[components objectAtIndex:2];  

  25.             if ([eventString isEqualToString:@"start"])  

  26.             {  

  27.                 float pointX=[[components objectAtIndex:3] floatValue];  

  28.                 float pointY=[[components objectAtIndex:4] floatValue];  

  29.                 double time=[[components objectAtIndex:5] doubleValue];  

  30.                 CGPoint aPoint = CGPointMake(pointX, pointY);  

  31.                 NSLog(@"start: %@", NSStringFromCGPoint(aPoint));  

  32.                 NSLog(@"start time: %0f   interval: %0f", time/1000, (time - lasttime)/1000);  

  33.                 lasttime = time;  

  34.                 bstart = YES;  

  35.                 bmove = NO;  

  36.                 NSLog(@"bstart: %d -- bmove: %d", bstart, bmove);  

  37.             }  

  38.             else if ([eventString isEqualToString:@"move"])  

  39.             {  

  40.                 float pointX=[[components objectAtIndex:3] floatValue];  

  41.                 float pointY=[[components objectAtIndex:4] floatValue];  

  42.                 CGPoint aPoint=CGPointMake(pointX, pointY);  

  43.                 NSLog(@"move: %@", NSStringFromCGPoint(aPoint));  

  44.                 bmove = YES;  

  45.                 NSLog(@"bstart: %d -- bmove: %d", bstart, bmove);  

  46.             }  

  47.             else if ([eventString isEqualToString:@"cancel"])  

  48.             {  

  49.                 NSLog(@"cancel");  

  50.                 bstart = NO;  

  51.                 bmove = NO;  

  52.                 NSLog(@"bstart: %d -- bmove: %d", bstart, bmove);  

  53.             }  

  54.             else if ([eventString isEqualToString:@"end"])  

  55.             {  

  56.                 double time=[[components objectAtIndex:3] doubleValue];  

  57.                 NSLog(@"end");  

  58.                 NSLog(@"bstart: %d -- bmove: %d", bstart, bmove);  

  59.                 NSLog(@"end time: %0f   interval: %0f", time/1000, (time - lasttime)/1000);  

  60.                 if (bstart && !bmove)  

  61.                 {  

  62.                     if (time - lasttime > 400)  

  63.                     {  

  64.                         NSLog(@"LongPress!!!!!!");  

  65.                     }  

  66.                     else  

  67.                     {  

  68.                         NSLog(@"Click!!!!!!");  

  69.                     }  

  70.                 }  

  71.                 bstart = NO;  

  72.                 bmove = NO;  

  73.             }  

  74.               

  75.             return NO;  

  76.         }  

  77.     }  

  78.       

  79.     NSURL *url = [request URL];  

  80.     NSString *curUrl= [url absoluteString];  

  81.     NSLog(@"cururl: %@", curUrl);  

  82.       

  83.     return result;  

  84. }  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章