Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> UIWebView的使用

UIWebView的使用

編輯:關於Android編程

UIWebView是網頁視圖控件,用來顯示網頁內容。功能類似於浏覽器。

1、goBack功能使用時,需要在已經打開過第二層及以上子鏈接的情況下才能返回打開上一層的鏈接

2、goForward功能使用時,需要在已經實現goBack功能的情況下才能實現,即已經存在緩存功能

3、UIWebView是UIScrollView的子類,擁有scrollView的相關屬性

4、擴展進階功能:與JavaScript的交互

我的第一個標題

我的第一個段落。

  1. UIWebView*webview=[[UIWebViewalloc]initWithFrame:CGRectMake(0.0,0.0,CGRectGetWidth(self.view.bounds),(CGRectGetHeight(self.view.bounds)-40.0))];
  2. [self.viewaddSubview:webview];
  3. webview.backgroundColor=[UIColorbrownColor];
  4. //tag
  5. webview.tag=1000;
  6. //UIScrollView的子類的相關屬性
  7. webview.scrollView.scrollEnabled=YES;
  8. webview.scrollView.delegate=self;
  9. //加載網頁
  10. //方法1加載百度網頁
  11. //NSURL*url=[NSURLURLWithString:@"http://www.baidu.com"];
  12. //NSURLRequest*request=[NSURLRequestrequestWithURL:url];
  13. //[webviewloadRequest:request];
  14. //方法2加載網頁內容
  15. NSString*html=@"";
  16. [webviewloadHTMLString:htmlbaseURL:nil];
  17.  
  18. //代理
  19. /*
  20. 1設置代理方法的實現對象
  21. 2添加協議
  22. 3實現代理方法
  23. */
  24. webview.delegate=self;
  25.  
  26. //多按鈕視圖控件
  27. UISegmentedControl*segmentedControl=[[UISegmentedControlalloc]initWithItems:@[@"GoBack",@"GoForward",@"Reload"]];
  28. [self.viewaddSubview:segmentedControl];
  29. segmentedControl.frame=CGRectMake(0.0,(CGRectGetHeight(self.view.bounds)-40.0),CGRectGetWidth(self.view.bounds),40.0);
  30. [segmentedControladdTarget:selfaction:@selector(segmentedControllAction:)forControlEvents:UIControlEventValueChanged];
  31. segmentedControl.tag=2000;
  32. //活動狀態視圖
  33. UIActivityIndicatorView*activityView=[[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
  34. [self.viewaddSubview:activityView];
  35. activityView.color=[UIColorredColor];
  36. activityView.frame=CGRectMake(0.0,0.0,50.0,50.0);
  37. activityView.center=self.view.center;
  38. [activityViewstopAnimating];
  39. activityView.hidesWhenStopped=YES;
  40. activityView.tag=3000;
  41. -(void)segmentedControllAction:(UISegmentedControl*)segmented
  42. {
  43. UIWebView*webview=(UIWebView*)[self.viewviewWithTag:1000];
  44.  
  45. NSIntegerindex=segmented.selectedSegmentIndex;
  46. switch(index)
  47. {
  48. case0:
  49. {
  50. //返回打開上一個頁面
  51. BOOLisGoBack=[webviewcanGoBack];
  52. if(isGoBack)
  53. {
  54. [webviewgoBack];
  55. }
  56. }
  57. break;
  58. case1:
  59. {
  60. //向前打開下一個頁面
  61. BOOLisGoForward=[webviewcanGoForward];
  62. if(isGoForward)
  63. {
  64. [webviewgoForward];
  65. }
  66. }
  67. break;
  68. case2:
  69. {
  70. //重新加載當前頁面
  71. BOOLisReloading=[webviewisLoading];
  72. if(!isReloading)
  73. {
  74. [webviewreload];
  75. }
  76. }
  77. break;
  78.  
  79. default:
  80. break;
  81. }
  82. }
  83. @interfaceViewController()
  84.  
  85. @end
  86.  
  87. //UIWebViewDelegate
  88. -(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType
  89. {
  90. NSLog(@"request%@",request);
  91.  
  92. //該方法可用來控制子鏈接
  93. //if(navigationType==UIWebViewNavigationTypeLinkClicked)
  94. //{
  95. ////禁止打開子鏈接
  96. //returnNO;
  97. //}
  98.  
  99. returnYES;
  100. }
  101.  
  102. -(void)webViewDidStartLoad:(UIWebView*)webView
  103. {
  104. NSLog(@"開始加載");
  105.  
  106. BOOLisReloading=[webViewisLoading];
  107. UISegmentedControl*segmentedControl=(UISegmentedControl*)[self.viewviewWithTag:2000];
  108. if(isReloading)
  109. {
  110. segmentedControl.userInteractionEnabled=NO;
  111. }
  112. else
  113. {
  114. segmentedControl.userInteractionEnabled=YES;
  115. }
  116.  
  117. UIActivityIndicatorView*activityView=(UIActivityIndicatorView*)[self.viewviewWithTag:3000];
  118. [activityViewstartAnimating];
  119. }
  120.  
  121. -(void)webViewDidFinishLoad:(UIWebView*)webView
  122. {
  123. NSLog(@"加載完成");
  124.  
  125. //加載成功,可用
  126. UISegmentedControl*segmentedControl=(UISegmentedControl*)[self.viewviewWithTag:2000];
  127. segmentedControl.userInteractionEnabled=YES;
  128.  
  129. //加載成功,停止並隱藏
  130. UIActivityIndicatorView*activityView=(UIActivityIndicatorView*)[self.viewviewWithTag:3000];
  131. [activityViewstopAnimating];
  132.  
  133. //加載成功,獲取當前網頁的高度
  134. CGFloatheight=[[webViewstringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"]floatValue];
  135. NSLog(@"documentHeight=%@",@(height));
  136. }
  137.  
  138. -(void)webView:(UIWebView*)webViewdidFailLoadWithError:(nullableNSError*)error
  139. {
  140. NSLog(@"加載失敗");
  141.  
  142. //加載失敗,不可用
  143. UISegmentedControl*segmentedControl=(UISegmentedControl*)[self.viewviewWithTag:2000];
  144. segmentedControl.userInteractionEnabled=NO;
  145.  
  146. //加載失敗,停止並隱藏
  147. UIActivityIndicatorView*activityView=(UIActivityIndicatorView*)[self.viewviewWithTag:3000];
  148. [activityViewstopAnimating];
  149.  
  150. //加載失敗,提示
  151. [[[UIAlertViewalloc]initWithTitle:nilmessage:@"加載失敗"delegate:nilcancelButtonTitle:nilotherButtonTitles:@"OK",nilnil]show];
  152. }
  153.  
  154. //UIScrollViewDelegate
  155. -(void)scrollViewDidScroll:(UIScrollView*)scrollView
  156. {
  157. //內容滾動變化間距
  158. CGFloatoffsetY=scrollView.contentOffset.y;
  159. NSLog(@"offsetX=%@",@(offsetY));
  160. }

注意:在最後釋放視圖控制器時,務必對內存進行處理。

  1. -(void)dealloc
  2. {
  3. _webview.delegate=nil;
  4. [_webviewloadHTMLString:@""baseURL:nil];
  5. [_webviewstopLoading];
  6. [_webviewremoveFromSuperview];
  7. [[NSURLCachesharedURLCache]removeAllCachedResponses];
  8. [UIApplicationsharedApplication].networkActivityIndicatorVisible=NO;
  9.  
  10. _webview=nil;
  11. }

\\\
 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved