日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

UIWebView

發(fā)布時(shí)間:2023/12/9 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UIWebView 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

IOS系統(tǒng)提供了 UIWebView 控件,從而可以方便地集成與網(wǎng)頁(yè)相關(guān)的多種應(yīng)用,該控件內(nèi)置瀏覽器控件,可以用來(lái)瀏覽網(wǎng)頁(yè)、打開(kāi)文檔等等。

?

一、UIWebView 可以加載和顯示某個(gè)URL的網(wǎng)頁(yè),也可以顯示基于HTML的本地網(wǎng)頁(yè)或部分網(wǎng)頁(yè):

a. 加載 URL

  • WebView?=?[[UIWebView?alloc]?initWithFrame:CGRectMake(0,?44,?320,?400)];???
  • NSString?*path?=?@"http://www.baidu.com";???
  • NSURL?*url?=?[NSURL?URLWithString:path];???
  • [WebView?loadRequest:[NSURLRequest?requestWithURL:url]];???
  • b. 加載 HTML

    NSBundle *bundle = [NSBundle mainBundle];
    NSString *resPath = [bundle resourcePath];
    NSString *filePath?= [resPath stringByAppendingPathComponent:@"Home.html"];
    [webView loadHTMLString:[NSString stringWithContentsOfFile:filePath]
    ??baseURL:[NSURL fileURLWithPath:[bundle bundlePath]]];

    二、使用網(wǎng)頁(yè)加載指示,加載完成后再顯示網(wǎng)頁(yè)出來(lái)

    ????首先要指定委托方法:

    ???????webView.delegate?=self;?

    ????UIWebView主要有下面幾個(gè)委托方法:

    ??????1、- (void)webViewDidStartLoad:(UIWebView *)webView;開(kāi)始加載的時(shí)候執(zhí)行該方法。
    ??????2、- (void)webViewDidFinishLoad:(UIWebView *)webView;加載完成的時(shí)候執(zhí)行該方法。
    ??????3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加載出錯(cuò)的時(shí)候執(zhí)行該方法。

    ?????這樣,可以利用 webViewDidStartLoad 和 webViewDidFinishLoad 方法實(shí)現(xiàn)本功能:????????

  • -?(void)?webViewDidStartLoad:(UIWebView?*)webView??
  • {??
  • ????//創(chuàng)建UIActivityIndicatorView背底半透明View????????
  • ????UIView?*view?=?[[UIView?alloc]?initWithFrame:CGRectMake(0,?0,?320,?480)];????
  • ????[view?setTag:108];????
  • ????[view?setBackgroundColor:[UIColor?blackColor]];????
  • ????[view?setAlpha:0.5];????
  • ????[self.view?addSubview:view];????
  • ??????
  • ????activityIndicator?=?[[UIActivityIndicatorView?alloc]?initWithFrame:CGRectMake(0.0f,?0.0f,?32.0f,?32.0f)];????
  • ????[activityIndicator?setCenter:view.center];????
  • ????[activityIndicator?setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];????
  • ????[view?addSubview:activityIndicator];????
  • ??
  • ????[activityIndicator?startAnimating];?
  • }
  • -?(void)?webViewDidFinishLoad:(UIWebView?*)webView??
  • {??
  • ????[activityIndicator?stopAnimating];??
  • ????UIView?*view?=?(UIView*)[self.view?viewWithTag:108];??
  • ????[view?removeFromSuperview];??
  • ????NSLog(@"webViewDidFinishLoad");??
  • }??
  • 三、UIWebView還可以通過(guò) stringByEvaluatingJavaScriptFromString 函數(shù)來(lái)執(zhí)行 javascript代碼,從而可以更加靈活地處理網(wǎng)頁(yè)文件

    ??1. 獲得UIWebView的標(biāo)題
    NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];

    ??2. 獲取頁(yè)面的URL

    NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];

    ??3. 修改頁(yè)面元素的值

    NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"];

    ??4. 表單提交

    NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "]

    ?

    四、綜合運(yùn)用以上方法,還可以實(shí)現(xiàn)部分網(wǎng)頁(yè)的顯示,基本思路如下:

    ????1. 用 loadRequest 先獲取網(wǎng)頁(yè),但先設(shè)置 UIWebView.hidden = YES;

    ????2. 在 webViewDidFinishLoad 中,用

    NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_x_x('xxxx').innerHTML; "] 獲取指定標(biāo)簽元素的HTML代碼 3. 再使用 loadHTMLString 加載該HTML代碼,即可

    轉(zhuǎn)載于:https://www.cnblogs.com/mumoozhu/p/4582814.html

    總結(jié)

    以上是生活随笔為你收集整理的UIWebView的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。